k8s 部署問題解決

本文記錄一下在部署 k8s 時遇到的一些問題及解決方法稼锅,具體部署流程可以參考 ubuntu 安裝 k8s 利凑。

從snap安裝導(dǎo)致的初始化問題

由于一開始我安裝的時候沒有配置好鏡像源掌挚,所以導(dǎo)致了apt下載 k8s 三件套時出現(xiàn)了找不到對應(yīng)包的問題翰苫,再加上 ubuntu 又提示了一下 try sudo snap isntall kubelet ... 所以我就用snap安裝了三件套囊嘉,使用的安裝命令如下:

snap install kubelet --classic
snap install kubeadm --classic
snap install kubectl --classic

雖然我在網(wǎng)上也找到了不少用snap成功部署的例子,但是迫于技術(shù)不精笛求,最終實(shí)在是無法解決出現(xiàn)的問題,換用了apt安裝之后就一帆風(fēng)順的安裝完成了。下面記錄一下用snap安裝時出現(xiàn)的問題:

kubelet isn't running or healthy

使用kubeadm init初始化時出現(xiàn)了下述錯誤探入,重復(fù)四次之后就超時退出了:

[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp [::1]:10248: connect: connection refused.
[kubelet-check] It seems like the kubelet isn't running or healthy.

官方給出的解決方案是使用systemctl status kubelet查看一下kubelet的狀態(tài)狡孔。但是我運(yùn)行之后顯示未找到kubelet.service,然后用如下命令查看啟動失敗的服務(wù):

systemctl list-units --failed

結(jié)果發(fā)現(xiàn)一個名為snap.kubelet.daemon.service的服務(wù)無法啟動了蜂嗽,嘗試了各種方法都沒有讓它復(fù)活苗膝,無奈只好放棄用snap安裝了。如果有大佬知道該怎么解決請告訴我植旧,不勝感激辱揭。下面就說一下遇到的其他問題。

初始化時的警告

在使用kubeadm init命令初始化節(jié)點(diǎn)剛開始時病附,會有如下的perflight階段问窃,該階段會進(jìn)行檢查,如果其中出現(xiàn)了如下WARNING并且初始化失敗了完沪。就要回來具體查看一下問題了域庇。下面會對下述兩個警告進(jìn)行解決:

# kubeadm init ...
[init] Using Kubernetes version: v1.15.0
[preflight] Running pre-flight checks
        [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
        [WARNING FileExisting-socat]: socat not found in system path

WARNING IsDockerSystemdCheck

修改或創(chuàng)建/etc/docker/daemon.json,加入下述內(nèi)容:

{
  "exec-opts": ["native.cgroupdriver=systemd"]
}

重啟docker

systemctl restart docker

查看修改后的狀態(tài):

docker info | grep Cgroup

WARNING FileExisting-socat

socat是一個網(wǎng)絡(luò)工具覆积, k8s 使用它來進(jìn)行 pod 的數(shù)據(jù)交互听皿,出現(xiàn)這個問題直接安裝socat即可:

apt-get install socat

節(jié)點(diǎn)狀態(tài)為 NotReady

使用kubectl get nodes查看已加入的節(jié)點(diǎn)時,出現(xiàn)了StatusNotReady的情況宽档。

root@master1:~# kubectl get nodes
NAME      STATUS      ROLES    AGE    VERSION
master1   NotReady    master   152m   v1.15.0
worker1   NotReady    <none>   94m    v1.15.0

這種情況是因?yàn)橛心承╆P(guān)鍵的 pod 沒有運(yùn)行起來尉姨,首先使用如下命令來看一下kube-system的 pod 狀態(tài):

kubectl get pod -n kube-system
NAME                              READY   STATUS             RESTARTS   AGE
coredns-bccdc95cf-792px           1/1     Pending            0          3h11m
coredns-bccdc95cf-bc76j           1/1     Pending            0          3h11m
etcd-master1                      1/1     Running            2          3h10m
kube-apiserver-master1            1/1     Running            2          3h11m
kube-controller-manager-master1   1/1     Running            2          3h10m
kube-flannel-ds-amd64-9trbq       0/1     ImagePullBackoff   0          133m
kube-flannel-ds-amd64-btt74       0/1     ImagePullBackoff   0          174m
kube-proxy-27zfk                  1/1     Pending            2          3h11m
kube-proxy-lx4gk                  1/1     Pending            0          133m
kube-scheduler-master1            1/1     Running            2          3h11m

如下,可以看到 pod kube-flannel 的狀態(tài)是ImagePullBackoff吗冤,意思是鏡像拉取失敗了又厉,所以我們需要手動去拉取這個鏡像。這里可以看到某些 pod 運(yùn)行了兩個副本是因?yàn)槲矣袃蓚€節(jié)點(diǎn)存在了欣孤。

你也可以通過kubectl describe pod -n kube-system <服務(wù)名>來查看某個服務(wù)的詳細(xì)情況馋没,如果 pod 存在問題的話,你在使用該命令后在輸出內(nèi)容的最下面看到一個[Event]條目降传,如下:

root@master1:~# kubectl describe pod kube-flannel-ds-amd64-9trbq -n kube-system

...

Events:
  Type     Reason                  Age                 From              Message
  ----     ------                  ----                ----              -------
  Normal   Killing                 29m                 kubelet, worker1  Stopping container kube-flannel
  Warning  FailedCreatePodSandBox  27m (x12 over 29m)  kubelet, worker1  Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "kube-flannel-ds-amd64-9trbq": Error response from daemon: cgroup-parent for systemd cgroup should be a valid slice named as "xxx.slice"
  Normal   SandboxChanged          19m (x48 over 29m)  kubelet, worker1  Pod sandbox changed, it will be killed and re-created.
  Normal   Pulling                 42s                 kubelet, worker1  Pulling image "quay.io/coreos/flannel:v0.11.0-amd64"

手動拉取鏡像

flannel的鏡像可以使用如下命令拉到篷朵,如果你是其他鏡像沒拉到的話,百度一下就可以找到國內(nèi)的鏡像源地址了婆排,這里記得把最后面的版本號修改成你自己的版本声旺,具體的版本號可以用上面說的kubectl describe命令看到:

docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64

等鏡像拉取完了之后需要把鏡像名改一下,改成 k8s 沒有拉到的那個鏡像名稱段只,我這里貼的鏡像名和版本和你的不一定一樣腮猖,注意修改:

docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64

修改完了之后過幾分鐘 k8s 會自動重試,等一下就可以發(fā)現(xiàn)不僅flannel正常了赞枕,其他的 pod 狀態(tài)也都變成了Running澈缺,這時再看 node 狀態(tài)就可以發(fā)現(xiàn)問題解決了:

root@master1:~# kubectl get nodes
NAME      STATUS   ROLES    AGE     VERSION
master1   Ready    master   3h27m   v1.15.0
worker1   Ready    <none>   149m    v1.15.0

工作節(jié)點(diǎn)加入失敗

在子節(jié)點(diǎn)執(zhí)行kubeadm join命令后返回超時錯誤坪创,如下:

root@worker2:~# kubeadm join 192.168.56.11:6443 --token wbryr0.am1n476fgjsno6wa --discovery-token-ca-cert-hash sha256:7640582747efefe7c2d537655e428faa6275dbaff631de37822eb8fd4c054807
[preflight] Running pre-flight checks
error execution phase preflight: couldn't validate the identity of the API Server: abort connecting to API servers after timeout of 5m0s

master節(jié)點(diǎn)上執(zhí)行kubeadm token create --print-join-command重新生成加入命令,并使用輸出的新命令在工作節(jié)點(diǎn)上重新執(zhí)行即可姐赡。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莱预,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子项滑,更是在濱河造成了極大的恐慌依沮,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枪狂,死亡現(xiàn)場離奇詭異危喉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)州疾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門辜限,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人孝治,你說我怎么就攤上這事列粪。” “怎么了谈飒?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵岂座,是天一觀的道長。 經(jīng)常有香客問我杭措,道長费什,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任手素,我火速辦了婚禮鸳址,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泉懦。我一直安慰自己稿黍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布崩哩。 她就那樣靜靜地躺著巡球,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邓嘹。 梳的紋絲不亂的頭發(fā)上酣栈,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音汹押,去河邊找鬼矿筝。 笑死,一個胖子當(dāng)著我的面吹牛棚贾,可吹牛的內(nèi)容都是我干的窖维。 我是一名探鬼主播榆综,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陈辱!你這毒婦竟也來了奖年?” 一聲冷哼從身側(cè)響起细诸,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沛贪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后震贵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體利赋,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年猩系,在試婚紗的時候發(fā)現(xiàn)自己被綠了媚送。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡寇甸,死狀恐怖塘偎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拿霉,我是刑警寧澤吟秩,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绽淘,受9級特大地震影響涵防,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沪铭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一壮池、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杀怠,春花似錦椰憋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至离钝,卻和暖如春票编,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卵渴。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工慧域, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浪读。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓昔榴,卻偏偏與公主長得像辛藻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子互订,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355