日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

config kubectl_kubectl常用命令归档及pod诊断工具安装

發布時間:2024/9/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 config kubectl_kubectl常用命令归档及pod诊断工具安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kubectl常用命令歸檔:

1 - k8s運行的服務是 kubectl,一般這個服務要設置默認開機啟動

[root@k8s-master ~]# systemctl enable kubelet.service

2 - 查看命令幫助

[root@k8s-master ~]# kubectl -h

3 - 查看更詳細pod內容

[root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-ds-ct2lx 1/1 Running 0 24h 10.244.2.2 k8s-node2 <none> <none> nginx-ds-gpslg 1/1 Running 0 24h 10.244.1.2 k8s-node <none> <none>

4 - 查看單個Pod的當前狀態

[root@k8s-master ~]# kubectl describe pod nginx-ds-ct2lx Name: nginx-ds-ct2lx Namespace: default Priority: 0 Node: k8s-node2/10.0.0.220 Start Time: Thu, 28 May 2020 15:33:34 +0800 Labels: app=nginx-dscontroller-revision-hash=65d4b5cd6bpod-template-generation=1 Annotations: <none> Status: Running IP: 10.244.2.2 IPs:IP: 10.244.2.2 Controlled By: DaemonSet/nginx-ds Containers:my-nginx:Container ID: docker://6f22f3ed661ef1d05ab3609e09843c0c6e253e06528ae4a817fa71156eb0be80Image: nginx:1.7.9Image ID: docker-pullable://nginx@sha256:e3456c851a152494c3e4ff5fcc26f240206abac0c9d794affb40e0714846c451Port: 80/TCPHost Port: 0/TCPState: RunningStarted: Thu, 28 May 2020 15:35:03 +0800Ready: TrueRestart Count: 0Environment: <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from default-token-gf85d (ro) Conditions:Type StatusInitialized True Ready False ContainersReady True PodScheduled True Volumes:default-token-gf85d:Type: Secret (a volume populated by a Secret)SecretName: default-token-gf85dOptional: false QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/disk-pressure:NoSchedulenode.kubernetes.io/memory-pressure:NoSchedulenode.kubernetes.io/not-ready:NoExecutenode.kubernetes.io/pid-pressure:NoSchedulenode.kubernetes.io/unreachable:NoExecutenode.kubernetes.io/unschedulable:NoSchedule Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled <unknown> default-scheduler Successfully assigned default/nginx-ds-ct2lx to k8s-node2Normal Pulling 24h kubelet, k8s-node2 Pulling image "nginx:1.7.9"Normal Pulled 24h kubelet, k8s-node2 Successfully pulled image "nginx:1.7.9"Normal Created 24h kubelet, k8s-node2 Created container my-nginxNormal Started 24h kubelet, k8s-node2 Started container my-nginx

5 - 查看命名空間下所有pod的狀態

[root@k8s-master ~]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-7ff77c879f-55ltm 1/1 Running 2 28h coredns-7ff77c879f-99twh 1/1 Running 2 28h etcd-k8s-master 1/1 Running 6 28h kube-apiserver-k8s-master 1/1 Running 5 28h kube-controller-manager-k8s-master 1/1 Running 5 28h kube-flannel-ds-amd64-hzssh 1/1 Running 2 25h kube-flannel-ds-amd64-jlgq8 1/1 Running 2 25h kube-flannel-ds-amd64-n7kbj 1/1 Running 2 25h kube-proxy-2tk6m 1/1 Running 0 25h kube-proxy-b546c 1/1 Running 6 28h kube-proxy-jv45b 1/1 Running 0 25h kube-scheduler-k8s-master 1/1 Running 5 28h

6 - 查看某個命名空間下的pod當前狀態(查看kube-scheduler-k8s-master)

[root@k8s-master ~]# kubectl describe pod kube-scheduler-k8s-master -n kube-system Name: kube-scheduler-k8s-master Namespace: kube-system Priority: 2000000000 Priority Class Name: system-cluster-critical Node: k8s-master/10.0.0.200 Start Time: Fri, 29 May 2020 15:54:35 +0800 Labels: component=kube-schedulertier=control-plane Annotations: kubernetes.io/config.hash: 2c04fc5e4761bd2ada4d5c31bd4317adkubernetes.io/config.mirror: 2c04fc5e4761bd2ada4d5c31bd4317adkubernetes.io/config.seen: 2020-05-28T12:06:12.513422254+08:00kubernetes.io/config.source: file Status: Running IP: 10.0.0.200 IPs:IP: 10.0.0.200 Controlled By: Node/k8s-master Containers:kube-scheduler:Container ID: docker://33fe41e50133b7446d4e30d214c03fef8205788ec23d3b7793bb945db0cedf09Image: registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.1Image ID: docker-pullable://registry.aliyuncs.com/google_containers/kube-scheduler@sha256:28e3b5320504fd20622e6860459f128289a3d4d8d17ac9dfb4408ca171e9e4bcPort: <none>Host Port: <none>Command:kube-scheduler--authentication-kubeconfig=/etc/kubernetes/scheduler.conf--authorization-kubeconfig=/etc/kubernetes/scheduler.conf--bind-address=127.0.0.1--kubeconfig=/etc/kubernetes/scheduler.conf--leader-elect=trueState: RunningStarted: Fri, 29 May 2020 15:54:39 +0800Last State: TerminatedReason: ErrorExit Code: 2Started: Thu, 28 May 2020 18:23:55 +0800Finished: Thu, 28 May 2020 18:35:29 +0800Ready: TrueRestart Count: 5Requests:cpu: 100mLiveness: http-get https://127.0.0.1:10259/healthz delay=15s timeout=15s period=10s #success=1 #failure=8Environment: <none>Mounts:/etc/kubernetes/scheduler.conf from kubeconfig (ro) Conditions:Type StatusInitialized True Ready True ContainersReady True PodScheduled True Volumes:kubeconfig:Type: HostPath (bare host directory volume)Path: /etc/kubernetes/scheduler.confHostPathType: FileOrCreate QoS Class: Burstable Node-Selectors: <none> Tolerations: :NoExecute Events:Type Reason Age From Message---- ------ ---- ---- -------Normal SandboxChanged 21h kubelet, k8s-master Pod sandbox changed, it will be killed and re-created.Normal Pulled 21h kubelet, k8s-master Container image "registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.1" already present on machineNormal Created 21h kubelet, k8s-master Created container kube-schedulerNormal Started 21h kubelet, k8s-master Started container kube-schedulerNormal SandboxChanged 15m kubelet, k8s-master Pod sandbox changed, it will be killed and re-created.Normal Pulled 15m kubelet, k8s-master Container image "registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.1" already present on machineNormal Created 15m kubelet, k8s-master Created container kube-schedulerNormal Started 15m kubelet, k8s-master Started container kube-scheduler

7 - 進入到這個pod的容器內部(進kube-scheduler-k8s-master)

[root@k8s-master ~]# kubectl -n kube-system exec -it kube-scheduler-k8s-master sh kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead. # ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr #

8 - 將單個 pod 的詳細信息輸出為 YAML 格式的對象

[root@k8s-master ~]# kubectl get pod nginx-ds-ct2lx -o yaml

9 - 通過使用 --sort-by 參數指定任何數字或字符串字段來對對象進行排序

[root@k8s-master ~]# kubectl get pods --sort-by=.metadata.name NAME READY STATUS RESTARTS AGE nginx-ds-ct2lx 1/1 Running 0 25h nginx-ds-gpslg 1/1 Running 0 25h

10 - 使用 example-service.yaml 中的定義創建服務

[root@k8s-master ~]# kubectl apply -f example-service.yaml

11 - 使用 example-controller.yaml 中的定義創建 replication controller

[root@k8s-master ~]# kubectl apply -f example-controller.yaml

12 - kubectl get - 列出一個或多個資源

## 以純文本輸出格式列出所有 pod。 [root@k8s-master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-ds-ct2lx 1/1 Running 0 25h nginx-ds-gpslg 1/1 Running 0 25h## 以純文本輸出格式列出所有 pod,并包含附加信息(如節點名)。 [root@k8s-master ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-ds-ct2lx 1/1 Running 0 25h 10.244.2.2 k8s-node2 <none> <none> nginx-ds-gpslg 1/1 Running 0 25h 10.244.1.2 k8s-node <none> <none>## 以純文本輸出格式列出所有副本控制器和服務。 [root@k8s-master ~]# kubectl get rc,services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 28h service/nginx-ds NodePort 10.1.163.141 <none> 80:30164/TCP 25h## 列出在節點 k8s-node 上運行的所有 pod [root@k8s-master ~]# kubectl get pods --field-selector=spec.nodeName=k8s-node NAME READY STATUS RESTARTS AGE nginx-ds-gpslg 1/1 Running 0 25h

13 - kubectl describe - 顯示一個或多個資源的詳細狀態,默認情況下包括未初始化的資源

## 顯示名稱為 k8s-node的節點的詳細信息。 [root@k8s-master ~]# kubectl describe nodes k8s-node## 顯示名為 nginx-ds-gpslg 的 pod 的詳細信息。 [root@k8s-master ~]# kubectl describe pods/nginx-ds-gpslg Name: nginx-ds-gpslg Namespace: default Priority: 0 Node: k8s-node/10.0.0.210 Start Time: Thu, 28 May 2020 15:33:34 +0800 Labels: app=nginx-dscontroller-revision-hash=65d4b5cd6bpod-template-generation=1 Annotations: <none> Status: Running IP: 10.244.1.2 IPs:IP: 10.244.1.2 # …………………………………………………………………………

14 - kubectl get 命令

kubectl get 命令通常用于檢索同一資源類型的一個或多個資源。 它具有豐富的參數,允許您使用 -o 或 --output 參數自定義輸出格式。 您可以指定 -w 或 --watch 參數以開始觀察特定對象的更新。 kubectl describe 命令更側重于描述指定資源的許多相關方面。 它可以調用對 API 服務器 的多個 API 調用來為用戶構建視圖。 例如,該 kubectl describe node 命令不僅檢索有關節點的信息,還檢索在其上運行的 pod 的摘要,為節點生成的事件等。

15 - kubectl delete - 從文件、stdin 或指定標簽選擇器、名稱、資源選擇器或資源中刪除資源

## 使用 pod.yaml 文件中指定的類型和名稱刪除 pod。 [root@k8s-master ~]# kubectl delete -f pod.yaml## 刪除標簽名= <label-name> 的所有 pod 和服務。 [root@k8s-master ~]# kubectl delete pods,services -l name=<label-name>## 刪除所有具有標簽名稱= <label-name> 的 pod 和服務,包括未初始化的那些。 [root@k8s-master ~]# kubectl delete pods,services -l name=<label-name> --include-uninitialized## 刪除所有 pod,包括未初始化的 pod [root@k8s-master ~]# kubectl delete pods --all

16 - kubectl exec - 對 pod 中的容器執行命令

## 從 pod <pod-name> 中獲取運行 'date' 的輸出。默認情況下,輸出來自第一個容器。 [root@k8s-master ~]# kubectl exec <pod-name> date## 運行輸出 'date' 獲取在容器的 <container-name> 中 pod <pod-name> 的輸出。 [root@k8s-master ~]# kubectl exec <pod-name> -c <container-name> date## 獲取一個交互 TTY 并運行 /bin/bash <pod-name >。默認情況下,輸出來自第一個容器。 [root@k8s-master ~]# kubectl exec -ti <pod-name> /bin/bash

官方的kubectl參考:

Kubectl Reference Docs?kubernetes.io

二、 安裝調試工具利器 kubectl-debug(Pod故障診斷)

kubectl-debug 是一個簡單的 kubectl 插件, 能夠幫助你便捷地進行 Kubernetes 上的 Pod 排障診斷. 背后做的事情很簡單: 在運行中的 Pod 上額外起一個新容器, 并將新容器加入到目標容器的 pid, network, user 以及 ipc namespace 中, 這時我們就可以在新容器中直接用 netstat, tcpdump 這些熟悉的工具來解決問題了, 而舊容器可以保持最小化, 不需要預裝任何額外的排障工具。

kubectl-debug 包含兩部分, 一部分是用戶側的 kubectl 插件, 另一部分是部署在所有 k8s 節點上的 agent(用于啟動"新容器", 同時也作為 SPDY 連接的中繼). 在 agentless 中, kubectl-debug 會在 debug 開始時創建 debug-agent Pod, 并在結束后自動清理.(默認開啟agentless模式)

步驟分別是:

+ 插件查詢 ApiServer:demo-pod 是否存在,所在節點是什么

+ ApiServer 返回 demo-pod 所在所在節點

+ 插件請求在目標節點上創建 Debug Agent Pod

+ Kubelet 創建 Debug Agent Pod

+ 插件發現 Debug Agent 已經 Ready,發起 debug 請求(長連接)

+ Debug Agent 收到 debug 請求,創建 Debug 容器并加入目標容器的各個 Namespace 中,創建完成后,與 Debug 容器的 tty 建立連接

+ 接下來,客戶端就可以開始通過 5,6 這兩個連接開始 debug 操作。操作結束后,Debug Agent 清理 Debug 容器,插件清理 Debug Agent,一次 Debug 完成。

安裝

1 -下載安裝 kubectl debug 插件

[root@k8s-master ~]# tar -zxvf kubectl-debug.tar.gz LICENSE README.md kubectl-debug [root@k8s-master ~]# ls abc.cfg flannel-v12.tar kubectl-debug.tar.gz LICENSE README.md anaconda-ks.cfg kubectl-debug kube-flannel.yml nginx-ds.yml recommended.yaml[root@k8s-master ~]# mv kubectl-debug /usr/local/bin/

2 - 安裝 debug-agent DaemonSet

[root@k8s-master ~]# kubectl apply -f > https://raw.githubusercontent.com/aylei/kubectl-debug/master/scripts/agent_daemonset.yml daemonset.apps/debug-agent created你來了,守護心靈的救世主?mp.weixin.qq.com

總結

以上是生活随笔為你收集整理的config kubectl_kubectl常用命令归档及pod诊断工具安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。