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