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