之前我寫(xiě)了一篇containerd+k8s搭建集群的文章,文章地址:
https://blog.csdn.net/m0_51510236/article/details/130842122
在上面這篇文章中有小伙伴給我反映鏡像拉取不到的問(wèn)題,現(xiàn)在我們就來(lái)解決這個(gè)問(wèn)題
因?yàn)槭菍?duì)上一篇文章拉取不到鏡像問(wèn)題的解決,所以安裝前的準(zhǔn)備工作請(qǐng)參考上一篇文章
本片文章的視頻教程地址為:https://www.bilibili.com/video/BV1dP411q7FD/?vd_source=98deeeab6739fa30792cfcffa994b50e
下載離線鏡像
離線鏡像我已經(jīng)上傳到百度網(wǎng)盤(pán),可以使用根據(jù)下面的提取地址提取
鏈接:https://pan.baidu.com/s/1-ILbg0GG8jNHQhVaVhUKww?pwd=kfe2
提取碼:kfe2
導(dǎo)入鏡像
我已經(jīng)上傳這個(gè)文件到我的master節(jié)點(diǎn):
接下來(lái)我們需要解壓它,使用以下命令:
tar -zxvf k8s-image.tar.gz
解壓之后我們可以看到兩個(gè)文件,一個(gè) k8s-master.tar.gz
另一個(gè) k8s-node.tar.gz
:
其中兩個(gè)文件的作用:
- k8s-master.tar.gz: master上所有的鏡像的離線文件
- k8s-node.tar.gz: node上所有鏡像的離線文件
需要使用文件傳輸命令把 k8s-node.tar.gz
傳輸?shù)剿械膎ode上:
命令:
scp k8s-node.tar.gz root@{你node的地址}:/usr/local/src/
接下來(lái)就可以開(kāi)始導(dǎo)入鏡像了,因?yàn)殓R像需要導(dǎo)入到containerd的 k8s.io
命名空間當(dāng)中,所以我們需要?jiǎng)?chuàng)建這個(gè)命名空間,使用命令:
ctr ns create k8s.io
創(chuàng)建完成后可以查看命名空間列表:
接下來(lái)我們可以使用以下命令導(dǎo)入鏡像
- k8s-master:
ctr -n k8s.io image import k8s-master.tar.gz
- k8s所有node:
ctr -n k8s.io image import k8s-node.tar.gz
出現(xiàn)這個(gè)代表導(dǎo)入成功:
可以通過(guò)以下命令查看鏡像:
ctr -n k8s.io images list
查看的結(jié)果:
初始化集群
現(xiàn)在鏡像已經(jīng)全部下載下來(lái)了,就可以直接初始化鏡像,可以執(zhí)行命令(注意修改IP地址和版本號(hào)):
kubeadm init \
--apiserver-advertise-address=192.168.3.160 \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.26.5 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///var/run/containerd/containerd.sock
因?yàn)槲覀冞@次搭建是提前導(dǎo)入了鏡像,所以初始化步驟非??欤?br>
因?yàn)橹暗奈恼轮兄v過(guò),所以這里將非??斓倪^(guò)一下,本地執(zhí)行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
所有的node節(jié)點(diǎn)執(zhí)行(注意更換為自己的token):
kubeadm join 192.168.3.160:6443 --token mjdae0.b71g5of1dsor97e0 \
--discovery-token-ca-cert-hash sha256:336be2f0acc7828cad61cd54b40ed50a9f8326d67e2144e3c0864b236e112fcb \
--cri-socket=unix:///var/run/containerd/containerd.sock
節(jié)點(diǎn)加入成功:
安裝calico插件
執(zhí)行以下命令進(jìn)行安裝:
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/tigera-operator.yaml
和上面一樣,因?yàn)殓R像已經(jīng)提前拉取完成,所以創(chuàng)建過(guò)程特別快:
初始化客戶端資源
cat <<EOF > custom-resources.yaml
apiVersion: operator.tigera.io/v1
kind: Installation
metadata:
name: default
spec:
calicoNetwork:
ipPools:
- blockSize: 26
cidr: 10.244.0.0/16
encapsulation: VXLANCrossSubnet
natOutgoing: Enabled
nodeSelector: all()
---
apiVersion: operator.tigera.io/v1
kind: APIServer
metadata:
name: default
spec: {}
EOF
kubectl create -f custom-resources.yaml
這個(gè)操作也能非??焱瓿桑?br>
安裝MetalLB
需要修改配置:
kubectl edit configmap -n kube-system kube-proxy
需要修改的地方:
開(kāi)始安裝:
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml
安裝完成:
分配IP地址池(注意修改為自己的網(wǎng)段里面沒(méi)有用到的地址):
cat <<EOF > metallb-ippool-config.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.3.163-192.168.3.169
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
spec:
ipAddressPools:
- first-pool
EOF
kubectl apply -f metallb-ippool-config.yaml
部署一個(gè)nginx應(yīng)用并暴露端口
部署應(yīng)用:
kubectl create deployment nginx --image=registry.cn-hangzhou.aliyuncs.com/xiaohh-docker/nginx:latest
暴露端口:
kubectl expose deployment nginx --port=80 --type=LoadBalancer
可以看到成功暴露了一個(gè)IP地址:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-492874.html
且能夠成功的訪問(wèn):
好了下課文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-492874.html
到了這里,關(guān)于解決containerd+k8s集群搭建鏡像拉取不到的問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!