集群配置
節(jié)點(diǎn)名稱 | 內(nèi)存 | 硬盤 | 處理器內(nèi)核總數(shù) | ip |
---|---|---|---|---|
master | 6GB | 40GB | 6 | 192.168.67.166 |
node1 | 6GB | 40GB | 6 | 192.168.67.167 |
node2 | 6GB | 40GB | 6 | 192.168.67.168 |
一、所有節(jié)點(diǎn)更改鏡像源
curl -o /etc/yum.repos.d/CentOS-Base.repo
二、所有節(jié)點(diǎn)安裝docker,注意:K8s在1.24以上版本將不再直接支持Docker,因此需要將Kubernetes的Runtime改為Containerd。(安裝Docker時(shí)會(huì)自動(dòng)安裝Containerd)
-- Docker CE 的軟件源信息添加到 YUM 軟件包管理器的配置中,系統(tǒng)默認(rèn)鏡像不包含docker-ce yum install -y yum-utils yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -- 卸載舊版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine -- 下載docker-ce sudo yum install -y docker-ce-20.10.* docker-ce-cli-20.10.* -- 配置鏡像加速https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://sfpt7y1n.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
三、所有節(jié)點(diǎn)對系統(tǒng)進(jìn)行配置修改
-- 禁用selinux,讓容器可以讀取主機(jī)文件系統(tǒng) sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 -- 關(guān)閉swap分區(qū) sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久 -- 重啟生效 reboot -- 關(guān)閉防火墻 systemctl stop firewalld.service systemctl disable firewalld.service -- 配置hosts sudo tee -a /etc/hosts <<EOF 192.168.67.166 master 192.168.67.167 node1 192.168.67.168 node2 EOF
四、所有節(jié)點(diǎn)配置k8s的yum倉庫
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF -- 導(dǎo)入密鑰 rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
五、所有節(jié)點(diǎn)安裝kubelet,kubeadm,kubelet
yum install -y kubelet-1.25.1-0 kubeadm-1.25.1-0 kubectl-1.25.1-0
六、master節(jié)點(diǎn)執(zhí)行
-- 生成kubeadm配置模板 kubeadm config print init-defaults > kubeadm-config.yaml -- 編輯此配置文件 -- 修改advertiseAddress字段為本機(jī)地址 -- 檢查criSocket地址是否為下圖中所示 -- 檢查kubernetesVersion,應(yīng)與kubeadm version查詢得到的版本一致 -- 將imageRepository字段改為registry.cn-hangzhou.aliyuncs.com/google_containers -- 將name字段改為當(dāng)前master節(jié)點(diǎn)的名字 vi kubeadm-config.yaml
?-- master節(jié)點(diǎn)執(zhí)行`kubeadm config images list`查看所需下載鏡像
?
-- 更改鏡像地址,拉取每個(gè)鏡像 systemctl start docker docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.25.16 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.4-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.9.3
七、Containerd作為容器運(yùn)行時(shí)(所有節(jié)點(diǎn)執(zhí)行)
-- 所有節(jié)點(diǎn)配置Containerd所需模塊,確保在系統(tǒng)啟動(dòng)時(shí)自動(dòng)加載這兩個(gè)內(nèi)核模塊 cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF -- 所有節(jié)點(diǎn)加載模塊 modprobe -- overlay modprobe -- br_netfilter -- 所有節(jié)點(diǎn)配置Containerd所需內(nèi)核,為 Kubernetes 的 CRI 和相關(guān)網(wǎng)絡(luò)功能提供支持 cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF -- 所有節(jié)點(diǎn)加載內(nèi)核 sysctl --system -- 所有節(jié)點(diǎn)配置Containerd的配置文件 mkdir -p /etc/containerd containerd config default | tee /etc/containerd/config.toml -- 將containerd.runtimes.runc.options中的SystemdCgroup字段修改為true -- tips:進(jìn)入vi編輯器,按下Esc,底部欄輸入 /SystemdCgroup 即可快速定位 -- 接下來將sandbox_image的Pause鏡像修改為適合自己版本的地址,可參考第6步中Pause的地址 -- 修改完這兩處后保存退出 vi /etc/containerd/config.toml -- 所有節(jié)點(diǎn)設(shè)置Containerd開機(jī)啟動(dòng) systemctl daemon-reload systemctl enable --now containerd systemctl restart containerd -- 所有節(jié)點(diǎn)配置crictl客戶端連接的Runtime位置 cat > /etc/crictl.yaml <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint:unix:///run/containerd/containerd.sock timeout:10 debug:false EOF
?八、初始化集群(master節(jié)點(diǎn)執(zhí)行)
-- containerd作為runtime,設(shè)置開機(jī)自啟 systemctl enable --now kubelet kubeadm init --config kubeadm-config.yaml -- 若初始化失敗,需要檢查各項(xiàng)配置是否正確,之后再次初始化,清理命令如下 kubeadm reset -f ; ipvsadm --clear ; rm -rf ~/.kube
初始化成功后如下所示:(注意框出的部分)
?
-- 在master節(jié)點(diǎn)執(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í)行框出的第二部分: kubeadm join 192.168.67.166:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:4f35a9073247215976789e99c5f274e8bac36b88b8264252daf60dfd85c16b4b
在master節(jié)點(diǎn)輸入kubectl get node,顯示如下
?現(xiàn)在配置網(wǎng)絡(luò),以calico為例(https://docs.tigera.io/calico/3.25/getting-started/kubernetes/self-managed-onprem/onpremises)
-- 獲取官方模板,在master節(jié)點(diǎn)執(zhí)行 curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.2/manifests/calico.yaml -O kubectl apply -f calico.yaml
等一小會(huì),再次執(zhí)行kubectl get node
?至此集群搭建成功
?參考資料:文章來源:http://www.zghlxwxcb.cn/news/detail-760064.html
《云原生Kubernetes全棧架構(gòu)師》-杜寬文章來源地址http://www.zghlxwxcb.cn/news/detail-760064.html
到了這里,關(guān)于centos7搭建kubernetes-v1.25.1集群(Containerd作為運(yùn)行時(shí))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!