鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 初學K8s,好好教程不跟著來,非要全部安裝最新的docker 和 k8s,經過4小時奮戰終於解決! 先說明下docker是最新版的安裝,又安裝K8s cat > /etc/yum.repos.d/kubernetes.repo <<EOF [ku ...
鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站
初學K8s,好好教程不跟著來,非要全部安裝最新的docker 和 k8s,經過4小時奮戰終於解決!
先說明下docker是最新版的安裝,又安裝K8s
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y --nogpgcheck kubelet kubeadm kubectl
systemctl enable kubelet
這樣直接安裝成功,得到 1.23.5-0,版本號就是v1.23.5
然後噩夢開始,視頻教程人家指定了v1.19.0直接成功安裝,我這倒好,報錯開始
Initial timeout of 40s passed.
[kubelet-check] It seems like the kubelet isn't running or healthy.
[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.
....
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
報錯如上,首先先把你之前查到的資料見鬼去,反正在我這是不好使的(我這裡都是新版,2022-03-18新裝的)
1、systemctl start kubelet 這個在只有【主】的時候根本起不來,所以不用折騰看狀態了,有就行了
2、/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件,我相信你一定查到了,為啥我沒有,因為你的在這/usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf(這個你最好沒改過,改過的話改回去,保持預設就好),上面那個文件就該沒有的,連那個目錄都不該有的(再次強調新版!舊版不知道,v1.23.5我這是),有文章讓你新建並添加什麼的,刪了吧沒用的,啟動了也是假象
[root@k8s-master ~]# cd /etc/systemd/system/kubelet.service.d/
-bash: cd: /etc/systemd/system/kubelet.service.d/: 沒有那個文件或目錄
3、echo '{"exec-opts": ["native.cgroupdriver=systemd"]}' >> /etc/docker/daemon.json,我相信你已經見過這句了,是的!就是這句,這句真是重點!一開始我就對了,但是先往下看吧,真坑
4、還有讓你們改docker images tag的,歇了吧,用不到的
開始噩夢安裝之旅,註意這裡我已經替換為國內的阿裡源,所以根本不用改 docker Tag!只要能正常拉回來就沒有問題!
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.23.5 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.0.2
重點來了
排錯,這個也是重點,你知道是錯在哪!【重點1】
journalctl -xeu kubelet | grep Failed
定位為毛線在失敗(實際是一行,我換行下,這樣好看)
3月 18 20:21:04 k8s-master kubelet[36490]: E0318 20:21:04.954990 36490 server.go:302]
"Failed to run kubelet"
err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is
different from docker cgroup driver: \"cgroupfs\""
實際你只要在你的/etc/docker/daemon.json 中加入 "exec-opts": ["native.cgroupdriver=systemd"]
是加入!不是追加,追加的不管用!!!我就是被坑在這了!怕你搞錯,看例子!【重點2】
1 {
2 "registry-mirrors": ["https://你的加速地址.mirror.aliyuncs.com"],
3 "log-driver": "json-file",
4 "log-opts": {
5 "max-size": "10m",
6 "max-file": "1"
7 }, 【看這!這加個逗號,下麵加這句,結尾沒有逗號】
8 "exec-opts": ["native.cgroupdriver=systemd"]
9 }
然後,你就可以
systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet
kubeadm reset #重置了沒事的,反正之前也起不來~
y
systemctl status kubelet #初始就是啟動不了的
#驗證cgroupdriver 修改生效 (這兩行都是驗證的)看到systemd 就對了
docker info -f {{.CgroupDriver}}
docker info | grep -i cgroup
最後再執行
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.23.5 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.0.2
世界核平!
好了,萬馬奔騰~
原文鏈接:https://blog.csdn.net/zhangbest5/article/details/123583927