南七星之家 发表于 2024-6-9 15:24:24

k8s pod常用运维命令

1. 概述

kubectl 命令是操纵 Kubernetes 集群的最直接和最高效的途径,熟练掌握命令的使用能起到事半功倍的效果,整理命令有助于加深记忆,该文仅记录关于pod常用的操纵运维命令。
2. 查看namespaces

查看k8s集群中目前存在的namespaces
kubectl get namespaces
输入如下
https://img-blog.csdnimg.cn/7dfe174f6d1c4a2cb9d2963822b8e23b.png
3. 查看pods

3.1 查看全部的pods列表

查看k8s集群中全部的pods
kubectl get pods -A
https://img-blog.csdnimg.cn/b75de2171baa402ebdafa021d2d24ba1.png
3.2 查看指定namespace的pods列表

查看namespace为ceph的pods列表
kubectl get pods -n ceph
https://img-blog.csdnimg.cn/a55243a18a9749d090bd1757f8dae8c0.png
3.3 查看pods列表详细信息

kubectl get pods -n ceph
-o wide https://img-blog.csdnimg.cn/04d70c5af2014371b95c3732ce860216.png
3.4 查看某一个pod详细信息

kubectl describe pod rook-ceph-mon-a-7cc457848f-pzfbt -n ceph
https://img-blog.csdnimg.cn/d8871dd798d844fab53da95a81526fd2.png
4. 查看 pod 中的容器

4.1 此命令不包罗 init 容器

kubectl get pods POD_NAME_HERE -o jsonpath={.spec.containers[*].name} -n namespace
查看pod rook-ceph-mon-a-7cc457848f-pzfbt 不包罗init 容器
kubectl get pods rook-ceph-mon-a-7cc457848f-pzfbt -o jsonpath={.spec.containers[*].name} -n ceph
https://img-blog.csdnimg.cn/a05a79c42c6c4b33a79d63d0cb64d01d.png
4.2 查看 init 容器

kubectl get pods POD_NAME_HERE -o jsonpath={.spec.initContainers[*].name} -n namespace
查看pod rook-ceph-mon-a-7cc457848f-pzfbt init 容器
kubectl get pods rook-ceph-mon-a-7cc457848f-pzfbt -o jsonpath={.spec.initContainers[*].name} -n ceph
https://img-blog.csdnimg.cn/1edc96385e594849a291ea30605f51f5.png
4.3 查看全部容器

kubectl get pod POD_NAME_HERE -o jsonpath="{.spec['containers','initContainers'][*].name}" -n namespace
查看pod rook-ceph-mon-a-7cc457848f-pzfbt 全部容器
kubectl get pods rook-ceph-mon-a-7cc457848f-pzfbt -o jsonpath="{.spec['containers','initContainers'][*].name}"-n ceph
https://img-blog.csdnimg.cn/fdbd569f847d4a1e89c7eaa51f4a8094.png
5. 在 pod 中的执行命令

在容器内部执行命令
kubectl exec POD [-c CONTAINER] -- COMMAND
5.1 进入一个容器的交互式 shell

kubectl exec -it <POD_NAME> -- /bin/bash
进入rook-ceph-tools pod容器执行命令
kubectl exec-it rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- /bin/bash
https://img-blog.csdnimg.cn/6cb2f0ac7278456db92d195cd98e4e07.png
5.2 在指定命名空间的容器内执行命令

kubectl exec -n <NAMESPACE> <POD_NAME> -- ceph -s
在指定命名空间的容器内执行命令
kubectl execrook-ceph-tools-5dd99c4497-xmpkv -n ceph -- ceph -s
https://img-blog.csdnimg.cn/a32306e5f5b34d2ea538c151ac8263d7.png
5.3 在 Pod 中含有多个容器的环境下,指定容器执行命令

kubectl exec <POD_NAME> -c <CONTAINER_NAME> -- ls /
kubectl exec rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph -- ls /
https://img-blog.csdnimg.cn/6ac8b33460bd4888ac5e2df784d87e53.png
5.4 查看容器内的环境变量

kubectl exec <POD_NAME> -- env
kubectl exec rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- env
https://img-blog.csdnimg.cn/7ce2236a44304cc1a67c610060c45778.png
5.5 与容器内的数据库举行交互(比方 MySQL)

kubectl exec -it <POD_NAME> -- mysql -u root -p
kubectl exec -it mariadb-server-0 -c mariadb -n openstack -- mysql -u root -p
https://img-blog.csdnimg.cn/cab5e267c50046c3a6d3d9c1b17052b3.png
6. 查看pod的日记

输出pod中一个容器的日记。如果pod只包罗一个容器则可以省略容器名
kubectl logs [-f] [-p] POD [-c CONTAINER]
6.1 返回仅包罗一个容器的的日记快照

kubectl logs rook-ceph-tools-5dd99c4497-xmpkv -n ceph
https://img-blog.csdnimg.cn/c956bb21be9e43b4b5ad814f64700361.png
6.2 在 Pod 中含有多个容器的环境下,返回指定容器执行命令日记快照

kubectl logs rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
https://img-blog.csdnimg.cn/4974b1bcf9ac476790c17788938081b9.png
6.3 持续输出容器的日记

kubectl logs -f rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
https://img-blog.csdnimg.cn/73866972d85f48e7a71821680844d84b.png
6.4 仅输出中最近的20条日记

kubectl logs --tail=20 rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
https://img-blog.csdnimg.cn/3ede5f3ba73b477c8062f77230b69021.png
6.5 输出最近一小时内产生的全部日记

kubectl logs --since=1h rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph
https://img-blog.csdnimg.cn/79ce1ebf53354a5e86968620af39bdb8.png
7. 参考文献

https://www.kubernetes.org.cn/doc-64
https://www.cnblogs.com/shenyuanhaojie/p/16455741.html
https://cloud.tencent.com/developer/article/2353963

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: k8s pod常用运维命令