k8s pod常用运维命令

1. 概述

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


2. 查看namespaces

查看k8s集群中目前存在的namespaces

复制代码
kubectl get namespaces

输入如下

3. 查看pods

3.1 查看所有的pods列表

查看k8s集群中所有的pods

复制代码
kubectl get pods -A

3.2 查看指定namespace的pods列表

查看namespace为ceph的pods列表

复制代码
kubectl get pods -n ceph

3.3 查看pods列表详细信息

复制代码
kubectl get pods -n ceph -o wide

3.4 查看某一个pod详细信息

复制代码
kubectl describe pod rook-ceph-mon-a-7cc457848f-pzfbt -n ceph

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

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

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

5. 在 pod 中的执行命令

在容器内部执行命令

复制代码
kubectl exec POD [-c CONTAINER] -- COMMAND [args...]

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

5.2 在指定命名空间的容器内执行命令

复制代码
kubectl exec -n <NAMESPACE> <POD_NAME> -- ceph -s

在指定命名空间的容器内执行命令

复制代码
kubectl exec  rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- ceph -s

5.3 在 Pod 中含有多个容器的情况下,指定容器执行命令

复制代码
kubectl exec <POD_NAME> -c <CONTAINER_NAME> -- ls /

kubectl exec rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph -- ls /

5.4 查看容器内的环境变量

复制代码
kubectl exec <POD_NAME> -- env

kubectl exec rook-ceph-tools-5dd99c4497-xmpkv -n ceph -- env

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

6. 查看pod的日志

输出pod中一个容器的日志。如果pod只包含一个容器则可以省略容器名

复制代码
kubectl logs [-f] [-p] POD [-c CONTAINER]

6.1 返回仅包含一个容器的的日志快照

复制代码
kubectl logs rook-ceph-tools-5dd99c4497-xmpkv -n ceph

6.2 在 Pod 中含有多个容器的情况下,返回指定容器执行命令日志快照

复制代码
kubectl logs rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph

6.3 持续输出容器的日志

复制代码
kubectl logs -f rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph

6.4 仅输出中最近的20条日志

复制代码
kubectl logs --tail=20 rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph

6.5 输出最近一小时内产生的所有日志

复制代码
kubectl logs --since=1h rook-ceph-mon-a-7cc457848f-pzfbt -c mon -n ceph

7. 参考文献

https://www.kubernetes.org.cn/doc-64

https://www.cnblogs.com/shenyuanhaojie/p/16455741.html

https://cloud.tencent.com/developer/article/2353963

相关推荐
Cyber4K8 分钟前
【Kubernetes专项】K8s集群1.31版本安装手册
linux·docker·云原生·容器·kubernetes
凯子坚持 c9 分钟前
基于Docker的SD-WAN组网方案:利用节点小宝实现服务器远程开发
服务器·docker·容器
盈创力和200713 分钟前
以太网温湿度传感器如何提升机房环境监控的自动化与可靠性?
运维·自动化·以太网温湿度传感器·多协议支持·网络型温湿度传感器·物联网温湿度变送器·双重供电温湿度传感器
曹天骄17 分钟前
子域名交给 Cloudflare(DNS 委派)现在不行了
运维
橘子真甜~39 分钟前
Reids命令原理与应用5 - Redis 主从同步与高可用集群
运维·网络·数据库·redis·缓存·redis集群·redis高可用
陈让然1 小时前
WSL2 ubuntu18.04扩容
linux·运维·ubuntu
HIT_Weston1 小时前
94、【Ubuntu】【Hugo】搭建私人博客:面包屑(二)
linux·运维·ubuntu
hui2593031 小时前
RH134 第八章 管理存储堆栈
linux·运维·服务器
乾元1 小时前
10 个可复制的企业级项目:从需求到交付的 AI 网络工程模板(深度实战版)
运维·网络·人工智能·网络协议·安全
不做菜鸟的网工2 小时前
使用docker部署Speedtest-X内网测试网站
docker