新聞中心
這篇文章主要介紹“k8s基本排錯(cuò)的方法”,在日常操作中,相信很多人在k8s基本排錯(cuò)的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”k8s基本排錯(cuò)的方法”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
10余年的威遠(yuǎn)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整威遠(yuǎn)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“威遠(yuǎn)網(wǎng)站設(shè)計(jì)”,“威遠(yuǎn)網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
k8s基本排錯(cuò)
在排錯(cuò)過程中,kubectl
是最重要的工具,通常也是定位錯(cuò)誤的起點(diǎn)。這里也列出一些常用的命令,在后續(xù)的各種排錯(cuò)過程中都會(huì)經(jīng)常用到。
排錯(cuò)概覽
查看 Pod 狀態(tài)以及運(yùn)行節(jié)點(diǎn)
kubectl get pods -o wide kubectl -n kube-system get pods -o wide
查看 Pod 事件
kubectl describe pod
查看 Node 狀態(tài)
kubectl get nodes kubectl describe node
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 #以上命令操作假設(shè)控制平面以 Kubernetes 靜態(tài) Pod 的形式來運(yùn)行。如果 kube-apiserver 是用 systemd 管理的,則需要登錄到 master 節(jié)點(diǎn)上,然后使用 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 #以上命令操作假設(shè)控制平面以 Kubernetes 靜態(tài) Pod 的形式來運(yùn)行。如果 kube-controller-manager 是用 systemd 管理的,則需要登錄到 master 節(jié)點(diǎn)上,然后使用 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 #以上命令操作假設(shè)控制平面以 Kubernetes 靜態(tài) Pod 的形式來運(yùn)行。如果 kube-scheduler 是用 systemd 管理的,則需要登錄到 master 節(jié)點(diǎn)上,然后使用 journalctl -u kube-scheduler 查看其日志。
kube-DNS 日志
kube-dns 通常以 Addon 的方式部署,每個(gè) Pod 包含三個(gè)容器,最關(guān)鍵的是 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-node-shell而不是為每個(gè)節(jié)點(diǎn)分配公網(wǎng) IP 地址。比如:
[root@localhost ~]# cat kubectl-node_shell #!/bin/sh if [ -z "$1" ]; then echo "Please specify node name" exit 1 fi NODE="$1" IMAGE="alpine" POD="nsenter-$(env LC_CTYPE=C tr -dc a-z0-9 < /dev/urandom | head -c 6)" NAMESPACE="" # Check the node kubectl get node "$NODE" >/dev/null || exit 1 OVERRIDES="$(cat < chmod +x ./kubectl-node_shell sudo mv ./kubectl-node-shell /usr/local/bin/kubectl-node_shell [root@localhost ~]# ./kubectl-node_shell localhost.localdomain spawning "nsenter-i71opm" on "localhost.localdomain" If you don't see a command prompt, try pressing enter. [root@localhost /]# journalctl -l -u kubeletKube-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-42zpnui小工具
kubectl apply --namespace weave -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')" kubectl patch svc $(kubectl get svc -n weave |grep weave-scope-app |awk '{print $1}') -p '{"spec":{"type": "NodePort"}}' -n weave效果圖:
到此,關(guān)于“k8s基本排錯(cuò)的方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
網(wǎng)頁題目:k8s基本排錯(cuò)的方法
瀏覽路徑:http://fisionsoft.com.cn/article/pjecdh.html