当我试图在集群中公开一个服务时,我正在与K8S网络做斗争。特别是,我需要部署一个私有容器注册中心(通过K8S)并将其公开为clusterIP服务。
为了做到这一点,我跟踪了这个文章
目前,我不需要任何特定的卷,我只想公开集群中的服务。
这是POD yml文件:
apiVersion: v1
kind: Pod
metadata:
name: registry
labels:
app: registry
namespace: default
spec:
containers:
- name: registry
image: registry:2
imagePullPolicy: Always
ports:
- containerPort: 5000这是我的服务文件:
---
kind: Service
apiVersion: v1
metadata:
name: registry
namespace: default
spec:
selector:
app: registry
ports:
- port: 5000
targetPort: 5000两个对象都是通过kubectl create -f <FILE_NAME>创建的。
这些是我公开的服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 55m
registry ClusterIP 10.43.198.164 <none> 5000/TCP 10m虽然这是我的服务描述列表
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: 10.43.0.1
Port: https 443/TCP
TargetPort: 6443/TCP
Endpoints: 172.31.5.173:6443
Session Affinity: ClientIP
Events: <none>
Name: registry
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=registry
Type: ClusterIP
IP: 10.43.198.164
Port: <unset> 5000/TCP
TargetPort: 5000/TCP
Endpoints: 10.42.1.4:5000
Session Affinity: None
Events: <none>当我在部署pod的同一个节点上运行telnet 10.43.198.164 5000时,一切正常,而如果我在另一个节点(它是一个2节点集群)启动它,则命令将保持附加。
节点是具有ec2 7的AWS CentOS实例。
Kubernetes的版本为1.8.3,通过牧场主RKE部署
我发现了这个问题的几个问题,但没有什么能帮助我调查这个问题。
在这里,您可以找到用于实例化集群的已使用的RKE配置文件。
#{{ ansible_managed }}
nodes:
- address: node1
user: user
role: [controlplane,worker,etcd]
ssh_key_path: path
- address: node2
user: user
role: [worker]
ssh_key_path: path
ignore_docker_version: false
kubernetes_version: v1.10.1
network:
plugin:flannel有什么帮助吗?谢谢。
发布于 2018-04-30 16:10:12
我不认为这个问题与码头登记有关。好像是在网络层。
调试问题:
telnet 10.42.1.4 5000)吗?kubectl get nodes)和系统荚(kubectl -n kube-system get pods)准备好了吗?https://stackoverflow.com/questions/50103798
复制相似问题