k8s通过Service访问Pod

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475目录


回到顶部## 如何创建服务

1、创建Deployment

#启动三个pod,运行httpd镜像,label是run:mcw-httpd,Seveice将会根据这个label挑选PodapiVersion: apps/v1

[machangwei@mcwk8s-master ~]$ cat mcwHttpd.yml 
kind: Deployment
metadata:
 name: mcw-httpd
spec:
 replicas: 3
 selector:
 matchLabels:
 run: mcw-httpd
 template:
 metadata:
 labels:
 run: mcw-httpd
 spec:
 containers:
 - name: mcw-httpd
 image: httpd
 ports:
 - containerPort: 80
[machangwei@mcwk8s-master ~]$ kubectl apply -f mcwHttpd.yml 
deployment.apps/mcw-httpd created
[machangwei@mcwk8s-master ~]$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mcw-httpd-6fbf67d7d5-5rrkh   0/1     ContainerCreating   0          2m52s    mcwk8s-node1  
mcw-httpd-6fbf67d7d5-bqq58 0/1 ImagePullBackOff 0 2m52s 10.244.0.78 mcwk8s-node2  
mcw-httpd-6fbf67d7d5-j52ff 0/1 ImagePullBackOff 0 2m52s 10.244.0.70 mcwk8s-node1  
[machangwei@mcwk8s-master ~]$ kubectl get pod -o wide #过一会后,查看Pod分配了各自的IP,容器在创建的时候ip是none
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mcw-httpd-6fbf67d7d5-5rrkh 1/1 Running 0 6m28s 10.244.0.71 mcwk8s-node1  
mcw-httpd-6fbf67d7d5-bqq58 1/1 Running 0 6m28s 10.244.0.78 mcwk8s-node2  
mcw-httpd-6fbf67d7d5-j52ff 1/1 Running 0 6m28s 10.244.0.70 mcwk8s-node1  
[machangwei@mcwk8s-master ~]$ #这些ip只能被kubernates Cluster中的容器和节点访问

2、不通的情况,是不是就应该不通呢,答案是否。

[machangwei@mcwk8s-master ~]$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mcw-httpd-6fbf67d7d5-5rrkh   1/1     Running   0          16m   10.244.0.71   mcwk8s-node1    
mcw-httpd-6fbf67d7d5-bqq58 1/1 Running 0 16m 10.244.0.78 mcwk8s-node2  
mcw-httpd-6fbf67d7d5-j52ff 1/1 Running 0 16m 10.244.0.70 mcwk8s-node1  
[machangwei@mcwk8s-master ~]$ curl 10.244.0.78 #主节点访问节点2上的pod的ip,连接超时
curl: (7) Failed connect to 10.244.0.78:80; Connection timed out
 
节点2上访问节点2上的pod ip是能访问的
[root@mcwk8s-node2 ~]$ curl 10.244.0.78
# It works!



怀疑是节点上flannel状态问题
[machangwei@mcwk8s-master ~]$ kubectl get pod --all-namespaces|grep flannel
kube-system kube-flannel-ds-cn4m9 0/1 Error 233 (5m26s ago) 2d11h
kube-system kube-flannel-ds-hpgkz 1/1 Running 0 6d23h
kube-system kube-flannel-ds-nnjvj 0/1 CrashLoopBackOff 271 (15s ago) 6d23h


怀疑节点2上没添加-H的问题,然后添加重启docker daemon ,四个容器都重启了
[root@mcwk8s-node2 ~]$ vim /usr/lib/systemd/system/docker.service
[root@mcwk8s-node2 ~]$ grep -i execstart /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0 --containerd=/run/containerd/containerd.sock
[root@mcwk8s-node2 ~]$ systemctl daemon-reload 
[root@mcwk8s-node2 ~]$ systemctl restart docker
[root@mcwk8s-node2 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88de5020b420 registry.aliyuncs.com/google\_containers/pause:3.6 "/pause" 1 second ago Up 1 second k8s\_POD\_kube-flannel-ds-cn4m9\_kube-system\_ef070440-6778-430f-92b9-a1c48b755d2b\_1
adf80a28c0be b46c42588d51 "/usr/local/bin/kube…" 2 seconds ago Up 1 second k8s\_kube-proxy\_kube-proxy-92g5c\_kube-system\_a69acf11-f51a-46d6-9472-d54b5383efef\_1
46bceff879bd registry.aliyuncs.com/google\_containers/pause:3.6 "/pause" 6 seconds ago Up 2 seconds k8s\_POD\_kube-proxy-92g5c\_kube-system\_a69acf11-f51a-46d6-9472-d54b5383efef\_1
a5cdf7f6ef3b registry.aliyuncs.com/google\_containers/pause:3.6 "/pause" 6 seconds ago Up 2 seconds k8s\_POD\_mcw-httpd-6fbf67d7d5-bqq58\_default\_4ceffe1e-df14-47dd-82f0-83cb68555de7\_1


再次在主节点访问节点2上的pod ip ,还是无法访问,由于节点2上pod重启了,所以ip被重新分配了一个
[machangwei@mcwk8s-master ~]$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mcw-httpd-6fbf67d7d5-5rrkh 1/1 Running 0 30m 10.244.0.71 mcwk8s-node1  
mcw-httpd-6fbf67d7d5-bqq58 1/1 Running 1 (95s ago) 30m 10.244.0.79 mcwk8s-node2  
mcw-httpd-6fbf67d7d5-j52ff 1/1 Running 0 30m 10.244.0.70 mcwk8s-node1  
[machangwei@mcwk8s-master ~]$ 
[machangwei@mcwk8s-master ~]$ 
[machangwei@mcwk8s-master ~]$ curl 10.244.0.79 #虽然重新分配了ip,但是还是无法访问
curl: (7) Failed connect to 10.244.0.79:80; Connection timed out

3、创建Service

[machangwei@mcwk8s-master ~]$ cat mcwHttpdService.yml
apiVersion: v1
kind: Service
metadata:
 name: httpd-svc
spec:
 selector:
 run: httpd
 ports:
 - protocol: TCP
 port: 8080
 targetPort: 80
[machangwei@mcwk8s-master ~]$ kubectl apply -f mcwHttpdService.yml
service/httpd-svc created
[machangwei@mcwk8s-master ~]$ kubectl get service
NAME TYPE CLUSTER-IP    EXTERNAL-IP PORT(S) AGE
httpd-svc    ClusterIP   10.99.77.45    8080/TCP 14s
kubernetes ClusterIP 10.96.0.1  443/TCP 7d
[machangwei@mcwk8s-master ~]$ curl 10.99.77.45:8080
curl: (7) Failed connect to 10.99.77.45:8080; Connection refused

回到顶部## dns访问Service

[machangwei@mcwk8s-master ~]$ kubectl get deployment --namespace=kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
coredns 2/2     2            2 7d1h
[machangwei@mcwk8s-master ~]$ kubectl get service -o wide
NAME TYPE CLUSTER-IP    EXTERNAL-IP PORT(S) AGE SELECTOR
httpd-svc    ClusterIP   10.99.77.45    8080/TCP 61m run=httpd
kubernetes ClusterIP 10.96.0.1  443/TCP 7d1h 
[machangwei@mcwk8s-master ~]$ kubectl run mcwbusybox --rm -ti --image=busybox /bin/bash
pod "mcwbusybox" deleted
error: timed out waiting for the condition
[machangwei@mcwk8s-master ~]$ kubectl get pod
NAME READY STATUS RESTARTS AGE
mcw-httpd-6fbf67d7d5-5rrkh 1/1 Running 0 124m
mcw-httpd-6fbf67d7d5-bqq58 1/1 Running 1 (95m ago) 124m
mcw-httpd-6fbf67d7d5-j52ff 1/1 Running 0 124m


只可以访问自己节点上的pod,不能跨主机同命名空间内的pod互相通信。不知道哪里的问题
[machangwei@mcwk8s-master ~]$ kubectl run mcwcentos3 -it --image=centos /bin/bash
If you don't see a command prompt, try pressing enter.
[root@mcwcentos3 /]# curl 10.244.0.79
curl: (7) Failed to connect to 10.244.0.79 port 80: Connection timed out
[root@mcwcentos3 /]# curl 10.244.0.70
# It works!


[root@mcwcentos3 /]# curl 10.244.0.71
# It works!



route add -host 10.244.0.0 dev flannel.1
flannel.1


NMI watchdog: BUG: soft lockup - CPU#0 stuck for 22s
报错现象 系统或者网络占用过多CPU,造成内核软死锁(soft lockup)。Soft lockup名称解释:所谓,soft lockup就是说,这个bug没有让系统彻底死机,但是若干个进程(或...

回到顶部## fannel网络问题

网络是有问题的

两个节点上的fannel状态不对
[machangwei@mcwk8s-master ~]$ kubectl get pod --all-namespaces -o wide|grep flannel
kube-system   kube-flannel-ds-cn4m9   0/1     CrashLoopBackOff   286 (3m50s ago)   3d10h   10.0.0.6      mcwk8s-node2     
kube-system kube-flannel-ds-hpgkz 1/1 Running 1 (22h ago) 7d22h 10.0.0.4 mcwk8s-master  
kube-system kube-flannel-ds-nnjvj 0/1 CrashLoopBackOff 325 (3m21s ago) 7d22h 10
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值