大多數情況下,問題大多出在pod本身,我們可以按照如下命令進行分析定位問題
#kubectl get pod #檢視是否存在不正常的pod
#kubectl describe pod podname -n kube-system
#journalctl -u kubelet -n 1000 > a.txt #檢視kubelet日誌,將最新的100天輸出到a.txt
#kubectl logs pod podname -n kube-system
#docker ps -a #可以檢視到已經掛掉的容器相關資訊
#docker logs crash_docker_id #檢視已經掛掉容器的log
1. 很多pod一直處於建立中,如下圖
#kubectl describe pods corends-5644d7b6d9-v98km -n kube-system
logs: networkplugin cni failed to set up pod "nginx-pod-c9f8889f9-zrpg4_default" network: failed to set bridge addr: "cni0" already has an ip address different from 10.224.2.1/24
解決辦法:
#rm -rf /var/lib/cni/flannel/* && rm -rf /var/lib/cni/networks/cbr0/*
#ip link delete cni0 #非常重要
#kubeadm reset
#kubeadm join
ps:無論是master還是node,如果reset之後, init 或者join之前,都需要將cni0(ip link delete)重新刪除一下
2. flannel pod執行一段時間(幾個小時到一天之間)後,就出現崩潰問題,如下圖所示
通過檢視pod,出現下圖所示問題:
#kubectl describe pod kube-flannel-ds-amd64-wsxrq -n kube-system
檢視另外乙個pod,出現的問題:
最開始根據log查詢對應的方法,都沒有解決,直到發現有時pod會提示oomkilled(這個狀態應該不易被抓獲),基本上可以確認是flannel資源耗盡所致,現在將資源增加
#wget
#vim kube-flannel.yml #修改resource的值,如下
resources:
requests:
cpu: "200m"
#初始值是50m
memory: "250mi"
#初始值為100mi
limits:
cpu: "200m"
#初始值是50m
memory: "250mi"
#初始值為100mi
#kubectl delete kube-flannel.yml
其它關於 flannel 網路問題:詳情檢視
3. 子節點上使用kubectl問題
log: the connection to the server localhost:8080 was refused - did you specify the right host or port?
出現這個問題的原因是kubectl命令需要使用kubernetes-admin來執行,
解決方法如下,將主節點中的【/etc/kubernetes/admin.conf】檔案拷貝到從節點相同目錄下,然後如提示配置環境變數:
your kubernetes control-plane has initialized successfully!
to start using your cluster, you need to run the following as a regular user
:
mkdir -p $home/.kube
sudo cp -i /etc/kubernetes/admin.conf $home/.kube/config
sudo chown $(id -u)
:$(id -g) $home/.kube/config
另外一種解決辦法:
#echo "export kubeconfig=/etc/kubernetes/admin.conf" >> ~/.bash_profile
#source ~/.bash_profile
K8s部署prometheus監控K8s細節
prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...
k8s 多租戶 k8s 基礎介紹
備註 1 每乙個pod裡執行著乙個特殊的容器 pause容器,其他容器都是業務容器,這些業務容器共享pause容器的網路棧和volume 邏輯卷 掛載卷。因此他們之間的通訊和資料交換更為高效。2 k8s設計了pod物件,將每個服務程序包裝到相應的pod中,使其成為pod中執行的乙個容器 contai...
k8s集群部署 docker部署k8s安裝篇
1 安裝docker 緊接著配置乙個穩定 stable 的倉庫 倉庫配置會儲存到 etc yum.repos.d docker ce.repo檔案中 yum config manager add repo 更新yum安裝的相關docke軟體包 安裝docker ce yum update y yum...