在Ubuntu 16.04机器上设置Kubernetes集群时遇到问题,我已经正确设置了:
包含以下信息的集群:
NAME READY STATUS RESTARTS AGE
pod/coredns-86c58d9df4-78lnp 1/1 Running 0 80m
pod/coredns-86c58d9df4-lw7vl 1/1 Running 0 80m
pod/etcd-di-linux-host 1/1 Running 0 111m
pod/kube-apiserver-di-linux-host 1/1 Running 0 110m
pod/kube-controller-manager-di-linux-host 1/1 Running 0 111m
pod/kube-flannel-ds-amd64-6wvkh 1/1 Running 0 109m
pod/kube-flannel-ds-amd64-p7ftb 1/1 Running 0 110m
pod/kube-proxy-rbfvz 1/1 Running 0 109m
pod/kube-proxy-zwr7b 1/1 Running 0 111m
pod/kube-scheduler-di-linux-host 1/1 Running 0 111m
pod/kubernetes-dashboard-79ff88449c-9f8qw 1/1 Running 0 89m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 111m
service/kubernetes-dashboard ClusterIP 10.98.188.215 <none> 443/TCP 89m
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-flannel-ds-amd64 2 2 2 2 2 beta.kubernetes.io/arch=amd64 110m
daemonset.apps/kube-flannel-ds-arm 0 0 0 0 0 beta.kubernetes.io/arch=arm 110m
daemonset.apps/kube-flannel-ds-arm64 0 0 0 0 0 beta.kubernetes.io/arch=arm64 110m
daemonset.apps/kube-flannel-ds-ppc64le 0 0 0 0 0 beta.kubernetes.io/arch=ppc64le 110m
daemonset.apps/kube-flannel-ds-s390x 0 0 0 0 0 beta.kubernetes.io/arch=s390x 110m
daemonset.apps/kube-proxy 2 2 2 2 2 <none> 111m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/coredns 2/2 2 2 111m
deployment.apps/kubernetes-dashboard 1/1 1 1 89m
NAME DESIRED CURRENT READY AGE
replicaset.apps/coredns-86c58d9df4 2 2 2 111m
replicaset.apps/kubernetes-dashboard-79ff88449c 1 1 1 89m
我的集群信息
Kubernetes master is running at https://10.10.1.122:6443
KubeDNS is running at https://10.10.1.122:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
我的豆荚
NAME READY STATUS RESTARTS AGE
guids-68898f7dc9-c65nv 1/1 Running 0 102m
Name: guids-68898f7dc9-c65nv
Namespace: default
Priority: 0
PriorityClassName: <none>
Node: gmf.com/10.10.1.38
Start Time: Sun, 16 Dec 2018 15:43:41 +0200
Labels: pod-template-hash=68898f7dc9
run=guids
Annotations: <none>
Status: Running
IP: 10.244.1.15
Controlled By: ReplicaSet/guids-68898f7dc9
Containers:
guids:
Container ID: docker://125ceccad4e572b514538292aaeaa55e22050c5e9129f834de8e01dfd452c6c1
Image: alexellis2/guid-service:latest
Image ID: docker-pullable://alexellis2/guid-service@sha256:17207f799760ccdccd0fa1e7f37838af5df915a33f9f27e97951a6eeee8c3a6f
Port: 9000/TCP
Host Port: 0/TCP
State: Running
Started: Sun, 16 Dec 2018 15:43:46 +0200
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-hnwtc (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-hnwtc:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-hnwtc
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events: <none>
我在这里面临的问题是,无论何时我想卷曲服务或主节点上的pod IP都不会碰到,同时卷曲来自工作节点的服务/ pod很好,我是新手到Kubernetes,但我找不到如何诊断此问题的线索,我们将不胜感激。
当我尝试卷曲暴露的服务时,即使我从主服务器那里得到了这个结果:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guids ClusterIP 10.97.160.160 <none> 9000/TCP 92m
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 139m
ubuntu@master:/$ curl http://10.97.160.160:9000/guid
curl: (7) Failed to connect to 10.97.160.160 port 9000: Connection timed out
答案 0 :(得分:1)
可从其他节点访问的Pod IP和可从kubernetes集群内的Pod访问的clusterIP。
服务的集群IP不是容器的IP地址,它是根据服务中定义的规则映射到容器IP地址的虚拟地址,并且由kubernetes集群中的kube-proxy
守护程序管理
集群内部的通信特别需要集群IP,以访问服务背后的Pod,而无需关心Pod的副本数或节点Pod的存在以及clusterIP是静态的,这与Pod的IP不同。
如果可以阅读有关official documentation中服务IP的工作方式
我希望您遵循一些调试步骤:
您可以使用以下方法从pod内检查服务名称是否解析为ClusterIP:
kubectl exec -it <pod_name> bash
nslookup <svc_name>.<namespace>.svc.cluster.local
以上命令将为您提供服务的clusterIP。
检查工作节点是否可以从主节点ping通,如果不是,则说明覆盖网络存在问题,如果是法兰绒,则为问题。