【Kubernetes】如何使用Kubeadm部署K8S集群
一 . 準備機器
本次環境采用華為云ECS彈性云服務器部署(也可以使用VMware)
vm01(2V4G): Ubuntu_18.04作為K8S master節點
vm02(1V1G): Ubuntu_18.04作為K8S node節點
備注: 以下所有操作都是在root用戶下執行
二 . 在master節點安裝k8s和Docker
1.安裝需要的包
由于apt 源使用 HTTPS 以確保軟件下載過程中不被篡改。因此,我們首先需要添加使用 HTTPS 傳輸的軟件包以及 CA 證書
sudo apt install apt-transport-https ca-certificates software-properties-common curl
2.添加 谷歌GPG 密鑰
執行
curl -s https://mirrors.huaweicloud.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
從華為云開源鏡像網站獲取安裝
3.安裝docker 和kubeadm
首先我們修改一下Docker的鏡像源,這里我們使用中科大USTC鏡像源
echo “deb https://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main” \ > /etc/apt/sources.list.d/kubernetes.list
apt-get update ——安裝docker
apt-get install -y docker.io kubeadm ——安裝kubeadm
在上述安裝 kubeadm 的過程中,docker 和kubeadm、 kubelet、kubectl 工具都會被自動安裝好。
4.設置開機自啟動并啟動 Docker(后默認已設置自啟動,可忽略)
systemctl enable docker
systemctl start docker
5.執行 kubeadm init 自動化安裝kubernets
發現這7個k8s.gcr.io的鏡像包無法獲取。這就遇到了部署K8S最大的難題就是鏡像下載,由于是國內機器, 如果不進行科學上網在國內很難從k8s.gcr.io等鏡像源里下載鏡像。
這種情況下我們可以 直接指定國內鏡像代理倉庫(如阿里云代理倉庫)進行鏡像拉取下載, 成功拉取代理倉庫中的鏡像后,再將其tag打標簽成為k8s.gcr.io對應鏡像,最后再刪除從代理倉庫中拉取下來的鏡像,前提要確保imagePullPolicy策略是IfNotPresent,即本地有鏡像則使用本地鏡像,不拉取!或者將下載的鏡像放到私有倉庫里,然后將image下載源指向私倉地址。
因為不同的K8S版本需要的鏡像包不一樣,我們可以使用
kubeadm config images list 命令查詢一下kubeadm所需的k8s鏡像包版本
我們使用 docker pull 拉取所需鏡像包(這里指定一下鏡像源)
例:docker pull registry.aliyuncs.com/google_containers/coredns:1.7.0
docker pull registry.aliyuncs.com/google_containers/etcd:3.4.13-0
然后打tag,并刪除之前從代理倉庫下載的鏡像
例:docker tag registry.aliyuncs.com/google_containers/coredns:1.7.0
docker rmi 鏡像名稱 ——刪除pull下來的額鏡像
例:docker rmi registry.aliyuncs.com/google_containers/etcd:3.4.13-0
然后再執行 kubeadm init 就可以了
執行完成后k8s即安裝完成,最后會輸出kubeadm join那段命令,這個是node節點加入集群必須執行的命令。但是kubeadm init自動生成的token有效期只有24小時。
kubeadm join 192.168.0.3:6443 --token 9dimd4.cte6oheldr8p7ecq
–discovery-token-ca-cert-hash sha256:aad7cddf4764b9a576d315096c24059de53486f187a9135c8067268aa7167403
當然我們也可以使用
kubeadm token create --ttl 0
生成一個永不過期的 token(olt9w7.6yew4d24q40n5raa),后續node節點加入集群是要用到。
執行
kubectl get nodes
發現報錯了,第一次使用k8s需要執行下面命令配置kubect所需文件。
執行下面命令:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown (id?u):(id -u):(id?u):(id -g) HOME/.kube/config再次執行kubectlgetnodes就行了可以發現當前節點狀態NotReady狀態使用下面命令查看kubelet日志,看到網絡插件沒有安裝journalctl?f?ukubelet執行下面命令安裝weave插件kubectlapply?fhttps://cloud.weave.works/k8s/net?k8s?version=HOME/.kube/config 再次執行kubectl get nodes 就行了  可以發現當前節點狀態NotReady狀態 使用下面命令查看kubelet日志,看到網絡插件沒有安裝 journalctl -f -u kubelet  執行下面命令安裝weave插件 kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=HOME/.kube/config再次執行kubectlgetnodes就行了可以發現當前節點狀態NotReady狀態使用下面命令查看kubelet日志,看到網絡插件沒有安裝journalctl?f?ukubelet執行下面命令安裝weave插件kubectlapply?fhttps://cloud.weave.works/k8s/net?k8s?version=(kubectl version | base64 | tr -d ‘\n’)
看到節點已經正常了。master節點已經安裝完成。
三. node節點加入集群
1、登陸vm02,node節點虛擬機,參考前面步驟1 2 3 4,安裝kubeadm和docker 但是不執行kubeadm init
2 、然后需要下載kube-proxy pause鏡像(同上,先拉取鏡像再修改tag)
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2
docker pull registry.aliyuncs.com/google_containers/pause:3.2
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2 k8s.gcr.io/kube-proxy:v1.20.2
docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2
docker rmi registry.aliyuncs.com/google_containers/pause:3.2
3 、執行kubeadm join命令加入集群(join命令是master安裝時生成的)
這里token換成永久的token
kubeadm join 192.168.0.3:6443 --token 9dimd4.cte6oheldr8p7ecq
–discovery-token-ca-cert-hash sha256:aad7cddf4764b9a576d315096c24059de53486f187a9135c8067268aa7167403
4、安裝weave網絡插件
這里要用到kubectl命令,但是node節點不是master 無法執行。所以按照下面命令,admin.conf文件從master主機拷貝到node節點。
mkdir -p $HOME/.kube
scp {masterip}:/etc/kubernetes/admin.conf $HOME/.kube/config
chown (id?u):(id -u):(id?u):(id -g) HOME/.kube/config安裝weave:kubectlapply?f"https://cloud.weave.works/k8s/net?k8s?version=HOME/.kube/config  安裝weave: kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=HOME/.kube/config安裝weave:kubectlapply?f"https://cloud.weave.works/k8s/net?k8s?version=(kubectl version | base64 | tr -d ‘\n’)"
5、查看node節點狀態,部署完成。
總結
以上是生活随笔為你收集整理的【Kubernetes】如何使用Kubeadm部署K8S集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国自动驾驶系统行业
- 下一篇: 【Docker】容器的几种网络模式