Kubernetes----Pod常用操作
作者:redrose2100   类别:    日期:2022-05-22 16:21:45    阅读:1192 次   消耗积分:0 分

一、命令行查看pod

1.1 不指定命名查看pod

通过如下命令,不指定命名空间,查看的是default命名空间的pod,如下,default命名空间中没有pod

  1. [root@master demo]# kubectl get ns
  2. NAME STATUS AGE
  3. default Active 5d23h
  4. kube-node-lease Active 5d23h
  5. kube-public Active 5d23h
  6. kube-system Active 5d23h
  7. kubernetes-dashboard Active 5d20h
  8. [root@master demo]# kubectl get pod
  9. No resources found in default namespace.
  10. [root@master demo]#

1.2 指定命名空间查看pod

如下,指定命名空间即查询kube-system命名空间的pod,如下可以看出kube-system命名空间中有许多自带的pod

  1. [root@master demo]# kubectl get ns
  2. NAME STATUS AGE
  3. default Active 5d23h
  4. kube-node-lease Active 5d23h
  5. kube-public Active 5d23h
  6. kube-system Active 5d23h
  7. kubernetes-dashboard Active 5d20h
  8. [root@master demo]# kubectl get pod -n kube-system
  9. NAME READY STATUS RESTARTS AGE
  10. coredns-558bd4d5db-7vbmq 1/1 Running 0 5d23h
  11. coredns-558bd4d5db-sps22 1/1 Running 0 5d23h
  12. etcd-master 1/1 Running 0 5d23h
  13. kube-apiserver-master 1/1 Running 0 5d23h
  14. kube-controller-manager-master 1/1 Running 0 5d23h
  15. kube-flannel-ds-cd9qk 1/1 Running 0 5d23h
  16. kube-flannel-ds-gg4jq 1/1 Running 0 5d23h
  17. kube-flannel-ds-n76xj 1/1 Running 0 5d23h
  18. kube-proxy-g4j5g 1/1 Running 0 5d23h
  19. kube-proxy-h27ms 1/1 Running 0 5d23h
  20. kube-proxy-tqzjl 1/1 Running 0 5d23h
  21. kube-scheduler-master 1/1 Running 0 5d23h
  22. [root@master demo]#

二、命令行方式对Pod操作

2.1 命令行创建pod

如下,先创建dev命名空间,然后创建nginx的pod,使用nginx:latest 镜像,设置端口为80

  1. [root@master demo]# kubectl create namespace dev
  2. namespace/dev created
  3. [root@master demo]# kubectl run nginx --image=nginx:latest --port=80 -n dev
  4. pod/nginx created
  5. [root@master demo]#

2.2 命令行查询验证创建的pod

如下,查看上面创建的pod的信息

  1. [root@master demo]# kubectl get pod -n dev
  2. NAME READY STATUS RESTARTS AGE
  3. nginx 1/1 Running 0 77s
  4. [root@master demo]# kubectl get pod -n dev -o wide
  5. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  6. nginx 1/1 Running 0 85s 10.244.2.16 node2 <none> <none>
  7. [root@master demo]#

2.3 命令方式删除创建的pod

  1. [root@master demo]# kubectl delete pod nginx -n dev
  2. pod "nginx" deleted
  3. [root@master demo]# kubectl delete namespace dev
  4. namespace "dev" deleted
  5. [root@master demo]#

三、命令加配置文件方式对Pod操作

3.1 使用配置文件的方式创建pod

创建pod_nginx.yaml文件,内容如下,即创建一个dev的命名空间以及在dev的命名空间中创建一个nginx的pod

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: dev
  5. ---
  6. apiVersion: v1
  7. kind: Pod
  8. metadata:
  9. name: nginx
  10. namespace: dev
  11. spec:
  12. containers:
  13. - image: nginx:1.17.1
  14. name: pod
  15. ports:
  16. - name: nginx-port
  17. containerPort: 80
  18. protocol: TCP

使用如下命令创建

  1. [root@master demo]# kubectl create -f pod_nginx.yaml
  2. namespace/dev created
  3. pod/nginx created
  4. [root@master demo]#

3.2 使用配置文件的方式查看

如下,使用配置文件的方式查看创建的资源

  1. [root@master demo]# kubectl get -f pod_nginx.yaml
  2. NAME STATUS AGE
  3. namespace/dev Active 73s
  4. NAME READY STATUS RESTARTS AGE
  5. pod/nginx 1/1 Running 0 73s
  6. [root@master demo]#

3.3 使用配置文件的方式删除

如下,使用如下命令将创建的资源删除

  1. [root@master demo]# kubectl apply -f pod_nginx.yaml
  2. namespace/dev unchanged
  3. pod/nginx unchanged
  4. [root@master demo]#

四、 声明式对象配置的方式操作Pod

4.1 使用apply和配置文件方式创建pod

创建pod_nginx.yaml文件,内容如下,即创建一个dev的命名空间以及在dev的命名空间中创建一个nginx的pod

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: dev
  5. ---
  6. apiVersion: v1
  7. kind: Pod
  8. metadata:
  9. name: nginx
  10. namespace: dev
  11. spec:
  12. containers:
  13. - image: nginx:1.17.1
  14. name: pod
  15. ports:
  16. - name: nginx-port
  17. containerPort: 80
  18. protocol: TCP

使用如下命令创建

  1. [root@master demo]# kubectl apply -f pod_nginx.yaml
  2. namespace/dev created
  3. pod/nginx created
  4. [root@master demo]#

4.2 使用apply和配置文件的方式对pod进行修改

如下,将pod_nginx.yaml文件中的镜像修改为1.17.3

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: dev
  5. ---
  6. apiVersion: v1
  7. kind: Pod
  8. metadata:
  9. name: nginx
  10. namespace: dev
  11. spec:
  12. containers:
  13. - image: nginx:1.17.3
  14. name: pod
  15. ports:
  16. - name: nginx-port
  17. containerPort: 80
  18. protocol: TCP

然后使用如下命令修改更新

  1. [root@master demo]# kubectl apply -f pod_nginx.yaml
  2. namespace/dev unchanged
  3. pod/nginx configured
  4. [root@master demo]#

4.3 使用describe命令查看修改状态

如下,使用describe命令查看修改的状态

  1. [root@master demo]# kubectl describe pod nginx -n dev
  2. Name: nginx
  3. Namespace: dev
  4. Priority: 0
  5. Node: node2/192.168.16.42
  6. Start Time: Sun, 20 Mar 2022 14:43:51 +0800
  7. Labels: <none>
  8. Annotations: <none>
  9. Status: Running
  10. IP: 10.244.2.18
  11. IPs:
  12. IP: 10.244.2.18
  13. Containers:
  14. pod:
  15. Container ID: docker://9edee9d176b0c6cdda342c161f51ac306211504d897755d7f2a1c874f10530c3
  16. Image: nginx:1.17.3
  17. Image ID: docker-pullable://nginx@sha256:9688d0dae8812dd2437947b756393eb0779487e361aa2ffbc3a529dca61f102c
  18. Port: 80/TCP
  19. Host Port: 0/TCP
  20. State: Running
  21. Started: Sun, 20 Mar 2022 14:52:36 +0800
  22. Last State: Terminated
  23. Reason: Completed
  24. Exit Code: 0
  25. Started: Sun, 20 Mar 2022 14:43:52 +0800
  26. Finished: Sun, 20 Mar 2022 14:52:36 +0800
  27. Ready: True
  28. Restart Count: 1
  29. Environment: <none>
  30. Mounts:
  31. /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-rclxs (ro)
  32. Conditions:
  33. Type Status
  34. Initialized True
  35. Ready True
  36. ContainersReady True
  37. PodScheduled True
  38. Volumes:
  39. kube-api-access-rclxs:
  40. Type: Projected (a volume that contains injected data from multiple sources)
  41. TokenExpirationSeconds: 3607
  42. ConfigMapName: kube-root-ca.crt
  43. ConfigMapOptional: <nil>
  44. DownwardAPI: true
  45. QoS Class: BestEffort
  46. Node-Selectors: <none>
  47. Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
  48. node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
  49. Events:
  50. Type Reason Age From Message
  51. ---- ------ ---- ---- -------
  52. Normal Scheduled 9m17s default-scheduler Successfully assigned dev/nginx to node2
  53. Normal Pulled 9m16s kubelet Container image "nginx:1.17.1" already present on machine
  54. Normal Created 32s (x2 over 9m16s) kubelet Created container pod
  55. Normal Started 32s (x2 over 9m16s) kubelet Started container pod
  56. Normal Killing 32s kubelet Container pod definition changed, will be restarted
  57. Normal Pulled 32s kubelet Container image "nginx:1.17.3" already present on machine
  58. [root@master demo]#

4.4 删除Pod

apply命令不能删除操作,删除Pod还是要使用delete -f,如下:

  1. [root@master demo]# kubectl delete -f pod_nginx.yaml
  2. namespace "dev" deleted
  3. pod "nginx" deleted
  4. [root@master demo]#
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/250
个人成就
  • 博客总数: 613 
  • 阅读总量: 636977 
  • 2022年 : 371 篇 
  • 2023年 : 211 篇 
  • 2024年 : 31 篇 
  • 2025年 : 0 篇 
测试开发技术全栈公众号
DevOps技术交流微信群