k8s中运维/测试常用的命令整理(随时更新)


kubectl get pod 查看应用服务,-n 分区名:查看该分区下的pod,--all-namespace:查看所有分区的pod并显示在哪个分区,-a:展示所有pod,单个pod名 -oyaml/-ojson:展示pod配置信息,单个pod名 -owide:显示该podip/node信息,

kubectl get ns 查看分区,单个分区名 -oyaml/-ojson:查看ns详细配置,

kubectl get node 查看节点, 单个node名 -oyaml/-ojson:查看node详细配置,-owide 展示ip信息,然后通过ssh可以连接到该节点,

kubectl describe pod/ns/node : 查看事件

kubectl delete pod/ns:删除单个pod/ns,--all:删除全部pod/ns

kubectl exec -it pod名 bash/sh:进入服务的终端

检查节点证书:openssl x509 -in /etc/kubernetes/certs/kubelet-server.crt -noout -text | grep 'Not After\|Not Before’  (首先进入节点ip)

检查应用状态:kubectl get pod --all-namespaces -o wide | grep -v Running

批量删除分区:kubectl delete partition `kubectl get partition |grep test |awk  '{print $1}'`

 

查看 Pod 状态以及运行节点

kubectl get pods -o wide
kubectl -n kube-system get pods -o wide

查看 Pod 事件

kubectl describe pod <pod-name>

查看 Node 状态

kubectl get nodes
kubectl describe node <node-name>

kube-apiserver 日志

PODNAME=$(kubectl -n kube-system get pod -l component=kube-apiserver -o jsonpath='{.items[0].metadata.name}') kubectl -n kube-system logs $PODNAME --tail 100 

以上命令操作假设控制平面以 Kubernetes 静态 Pod 的形式来运行。如果 kube-apiserver 是用 systemd 管理的,则需要登录到 master 节点上,然后使用 journalctl -u kube-apiserver 查看其日志。

kube-controller-manager 日志

PODNAME=$(kubectl -n kube-system get pod -l component=kube-controller-manager -o jsonpath='{.items[0].metadata.name}') kubectl -n kube-system logs $PODNAME --tail 100 

以上命令操作假设控制平面以 Kubernetes 静态 Pod 的形式来运行。如果 kube-controller-manager 是用 systemd 管理的,则需要登录到 master 节点上,然后使用 journalctl -u kube-controller-manager 查看其日志。

kube-scheduler 日志

PODNAME=$(kubectl -n kube-system get pod -l component=kube-scheduler -o jsonpath='{.items[0].metadata.name}') kubectl -n kube-system logs $PODNAME --tail 100 

以上命令操作假设控制平面以 Kubernetes 静态 Pod 的形式来运行。如果 kube-scheduler 是用 systemd 管理的,则需要登录到 master 节点上,然后使用 journalctl -u kube-scheduler 查看其日志。

kube-dns 日志

kube-dns 通常以 Addon 的方式部署,每个 Pod 包含三个容器,最关键的是 kubedns 容器的日志:

PODNAME=$(kubectl -n kube-system get pod -l k8s-app=kube-dns -o jsonpath='{.items[0].metadata.name}') kubectl -n kube-system logs $PODNAME -c kubedns 

Kubelet 日志

Kubelet 通常以 systemd 管理。查看 Kubelet 日志需要首先 SSH 登录到 Node 上,推荐使用 kubectl-enter 插件而不是为每个节点分配公网 IP 地址。比如:

kubectl enter <node-name>
journalctl -l -u kubelet 

Kube-proxy 日志

Kube-proxy 通常以 DaemonSet 的方式部署,可以直接用 kubectl 查询其日志

$ kubectl -n kube-system get pod -l component=kube-proxy NAME READY STATUS RESTARTS AGE kube-proxy-42zpn 1/1 Running 0 1d kube-proxy-7gd4p 1/1 Running 0 3d kube-proxy-87dbs 1/1 Running 0 4d $ kubectl -n kube-system logs kube-proxy-42zpn

在k8s里部署deploymeny:

首先创建命名空间namespace

yaml文件:

 

 

创建: kubectl create -f authns.yaml

创建deploymeny:$ kubectl run nginx --image=cargo.caicloud.io/caicloud/nginx:1.9.7 --replicas=1 -n cnauth

查看pod: kubectl get pod -n cnauth -w    (-w是实时状态查看)

 

查看创建的pod类型:kubectl get all -n cnauth

 

删除pod,要删除deployment不然pod会自动重启:kubectl delete deployment nginx -n cnauth

 

 

查看pod日志相关命令记录:

Aliases:
logs, log

Examples:
# Return snapshot logs from pod nginx with only one container (只看一个pod)
kubectl logs nginx

# Return snapshot logs from pod nginx with multi containers (看pod和上一层容器)
kubectl logs nginx --all-containers=true

# Return snapshot logs from all containers in pods defined by label app=nginx 
kubectl logs -lapp=nginx --all-containers=true

# Return snapshot of previous terminated ruby container logs from pod web-1
kubectl logs -p -c ruby web-1

# Begin streaming the logs of the ruby container in pod web-1
kubectl logs -f -c ruby web-1

# Display only the most recent 20 lines of output in pod nginx  (限制输出行数)
kubectl logs --tail=20 nginx

# Show all logs from pod nginx written in the last hour  (查看上一小时内的log)
kubectl logs --since=1h nginx

# Return snapshot logs from first container of a job named hello
kubectl logs job/hello

# Return snapshot logs from container nginx-1 of a deployment named nginx
kubectl logs deployment/nginx -c nginx-1

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM