搞清楚Pod的创建过程后,又去学习了下Deployment,如上图Deployment涉及到了
controller-manager
组件,这次也实践测试一波。
# apiserver controller-manager scheduler 都是运行中的
[root@k8s-master-01 ~]# ss -lnpt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:10248 *:* users:(("kubelet",pid=21656,fd=23))
LISTEN 0 128 127.0.0.1:9099 *:* users:(("calico-node",pid=28589,fd=8))
LISTEN 0 128 127.0.0.1:37967 *:* users:(("containerd",pid=951,fd=15))
LISTEN 0 128 127.0.0.1:10259 *:* users:(("kube-scheduler",pid=18682,fd=7))
LISTEN 0 8 *:179 *:* users:(("bird",pid=28684,fd=7))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=945,fd=3))
LISTEN 0 128 [::]:10249 [::]:* users:(("kube-proxy",pid=29819,fd=13))
LISTEN 0 128 [::]:10250 [::]:* users:(("kubelet",pid=21656,fd=15))
LISTEN 0 128 [::]:6443 [::]:* users:(("kube-apiserver",pid=3268,fd=7))
LISTEN 0 128 [::]:10256 [::]:* users:(("kube-proxy",pid=29819,fd=12))
LISTEN 0 128 [::]:10257 [::]:* users:(("kube-controller",pid=25655,fd=7))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=945,fd=4))
[root@k8s-master-01 ~]# kubectl get pods
No resources found in default namespace.
[root@k8s-master-01 ~]# kubectl get deploy
No resources found in default namespace.
[root@k8s-master-01 ~]# cat nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
[root@k8s-master-01 ~]# kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 98s
[root@k8s-master-01 ~]# kubectl describe deploy nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Sat, 11 Jun 2022 21:03:19 +0800
Labels: app=nginx
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=nginx
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:latest
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-deployment-8d545c96d (3/3 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 110s deployment-controller Scaled up replica set nginx-deployment-8d545c96d to 3
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-8d545c96d-586g7 1/1 Running 0 2m18s
nginx-deployment-8d545c96d-9vqwb 1/1 Running 0 2m18s
nginx-deployment-8d545c96d-bq46r 1/1 Running 0 2m18s
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-8d545c96d-586g7 1/1 Running 0 4m31s 172.30.107.67 k8s-master-01 <none> <none>
nginx-deployment-8d545c96d-9vqwb 1/1 Running 0 4m31s 172.20.183.131 k8s-master-03 <none> <none>
nginx-deployment-8d545c96d-bq46r 1/1 Running 0 4m31s 172.21.176.204 k8s-master-02 <none> <none>
[root@k8s-master-01 ~]# curl http://172.30.107.67
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@k8s-master-01 ~]# curl http://172.20.183.131
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@k8s-master-01 ~]# curl http://172.21.176.204
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@k8s-master-01 ~]#
查看Depoyment的 Events
事件,是由deployment-controller 处理的,Pod也全部创建成功。
Pod内的服务也能访问,没啥问题。
将 controller-manager
停掉试试。
[root@k8s-master-01 ~]# kubectl delete -f nginx-deployment.yaml
deployment.apps "nginx-deployment" deleted
[root@k8s-master-01 ~]# kubectl get pods
No resources found in default namespace.
[root@k8s-master-01 ~]# systemctl stop kube-controller-manager
[root@k8s-master-01 ~]# ss -lnpt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:10248 *:* users:(("kubelet",pid=21656,fd=23))
LISTEN 0 128 127.0.0.1:9099 *:* users:(("calico-node",pid=28589,fd=8))
LISTEN 0 128 127.0.0.1:37967 *:* users:(("containerd",pid=951,fd=15))
LISTEN 0 128 127.0.0.1:10259 *:* users:(("kube-scheduler",pid=18682,fd=7))
LISTEN 0 8 *:179 *:* users:(("bird",pid=28684,fd=7))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=945,fd=3))
LISTEN 0 128 [::]:10249 [::]:* users:(("kube-proxy",pid=29819,fd=13))
LISTEN 0 128 [::]:10250 [::]:* users:(("kubelet",pid=21656,fd=15))
LISTEN 0 128 [::]:6443 [::]:* users:(("kube-apiserver",pid=3268,fd=7))
LISTEN 0 128 [::]:10256 [::]:* users:(("kube-proxy",pid=29819,fd=12))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=945,fd=4))
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
[root@k8s-master-01 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 0 0 8s
[root@k8s-master-01 ~]# kubectl get pods
No resources found in default namespace.
[root@k8s-master-01 ~]# kubectl describe deploy nginx-deployment
Name: nginx-deployment
Namespace: default
CreationTimestamp: Sat, 11 Jun 2022 21:11:56 +0800
Labels: app=nginx
Annotations: <none>
Selector: app=nginx
Replicas: 3 desired | 0 updated | 0 total | 0 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: app=nginx
Containers:
nginx:
Image: nginx:latest
Port: 80/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Events: <none>
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl get pods
No resources found in default namespace.
[root@k8s-master-01 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 0 0 2m13s
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# systemctl start kube-controller-manager
[root@k8s-master-01 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 0/3 0 0 3m22s
[root@k8s-master-01 ~]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 3m34s
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-8d545c96d-sp9q6 1/1 Running 0 86s
nginx-deployment-8d545c96d-t686q 1/1 Running 0 86s
nginx-deployment-8d545c96d-tnv9g 1/1 Running 0 86s
[root@k8s-master-01 ~]#
controller-manager
停掉后,Deployment就异常了,没法正常创建Pod。组件重新启动就又正常了。
这也说明Deployment确实依赖 controller-manager
组件。
搞清楚这些关系对问题排查有很大帮助,嗯嗯嗯,又学习到了哈~~~
网友评论