機器地址:
192.168.0.35 k8s-master
192.168.0.39 k8s-node1
192.168.0.116 k8s-node2
1、修改系統(tǒng)配置
修改每臺機器的名字
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
關(guān)閉防火墻和selinux
systemctl stop firewalld && systemctl disable firewalld
臨時關(guān)閉selinux:
setenforce 0
永久關(guān)閉:
vim /etc/selinux/config
修改selinux為disabled或者permissive 重啟生效
配置本地解析
echo '''
192.168.0.35 k8s-master
192.168.0.39 k8s-node1
192.168.0.116 k8s-node2
''' >> /etc/hosts
確保每個節(jié)點MAC地址和 product_uuid 的唯一性
你可以使用命令 ip link 或 ifconfig -a 來獲取網(wǎng)絡(luò)接口的 MAC 地址
可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令對 product_uuid 校驗
一般來講,硬件設(shè)備會擁有唯一的地址,但是有些虛擬機的地址可能會重復(fù)。 Kubernetes 使用這些值來唯一確定集群中的節(jié)點。 如果這些值在每個節(jié)點上不唯一,可能會導(dǎo)致安裝失敗。
同步時間
如果各機器上時間都沒有問題,也沒有偏差,則可以跳過該步驟。
# 安裝ntp工具
yum install -y ntp
#設(shè)置時區(qū)
timedatectl set-timezone 'Asia/Shanghai'
# 同步時間
ntpdate ntp1.aliyun.com
升級內(nèi)核
鏈接:linux(centos7.6–>7.9)內(nèi)核升級
更新yum—版本高可以跳過此步驟
sudo yum update
2、安裝docker應(yīng)用
每個節(jié)點都需要下載
yum install -y yum-utils device-mapper-persistent-data lvm2 git
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
注意:
如果使用的掛載磁盤則需要更改docker的數(shù)據(jù)目錄
如果是啟動過的docker則需要停止docker服務(wù) 然后把 /var/lib/docker/目錄下的數(shù)據(jù)移動到新的目錄 mv /var/lib/docker/ /data/docker/
修改docker默認數(shù)據(jù)存儲目錄配置,在/etc/docker/daemon.json文件添加 以下內(nèi)容,若是沒有/etc/docker/daemon.json文件,則新建該文件
vim /etc/docker/daemon.json
{
"data-root": "/data/docker"
}
啟動docker
systemctl start docker
systemctl enable docker
設(shè)置開機自啟
關(guān)閉swap分區(qū)
Kubernetes 1.8開始要求關(guān)閉系統(tǒng)的Swap,如果不關(guān)閉,默認配置下kubelet將無法啟動。方法一,通過kubelet的啟動參數(shù)–fail-swap-on=false更改這個限制。方法二,關(guān)閉系統(tǒng)的Swap。
每個節(jié)點都需要關(guān)閉
swapoff -a
vim /etc/fstab 注釋掉SWAP的自動掛載
使用free -m查看是否關(guān)閉
3. 拉取docker鏡像
初始化的時候,它會自動拉取鏡像但是自動拉取用的是k8s官網(wǎng)的源地址容易失敗所以手動拉取aliyun的鏡像。注意拉取的docker鏡像的版本必須要和kubelet、kubectl的版本保持一致。在下面初始化時直接指定阿里云的鏡像。
vim dockerpull.sh
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.26.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.9.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.6-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
執(zhí)行腳本拉取鏡像
bash dockerpull.sh
看下鏡像是否都拉取成功
docker images
4、cri-dockerd安裝
Kubernetes 的早期版本僅適用于特定的容器運行時:Docker Engine。 后來,Kubernetes 增加了對使用其他容器運行時的支持。為了實現(xiàn)編排器和許多不同的容器運行時之間交互操作創(chuàng)建了CRI 標準。 Docker Engine 沒有實現(xiàn)(CRI)接口,所以Kubernetes 項目創(chuàng)建了特殊代碼dockershim來幫助過渡,Dockershim 代碼一直是一個臨時解決方案(因此得名:shim)。 Kubernetes自v1.24移除了對Dockershim 的支持,而Docker Engine默認又不支持CRI規(guī)范,因而二者將無法直接完成整合。為此,Mirantis和Docker聯(lián)合創(chuàng)建了cri-dockerd項目,用于為Docker Engine提供一個能夠支持到CRI規(guī)范的墊片,從而能夠讓Kubernetes基于CRI控制Docker 。
注意部署最新版本XXXX 默認不在是使用docker容器,所以需要下載一個插件
所有節(jié)點都需要下載
https://github.com/Mirantis/cri-dockerd/releases
下載對應(yīng)版本的cri-dockerd rpm包,注意版本和linux版本,也可以自行下載上傳至所有主機
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd-0.3.2-3.el7.x86_64.rpm
安裝
rpm -ivh cri-dockerd-0.3.2-3.el7.x86_64.rpm
修改/usr/lib/systemd/system/cri-docker.service文件中ExecStart配置kubelet使用pause鏡像
vim /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
重新加載&現(xiàn)在啟動
systemctl daemon-reload
systemctl enable --now cri-docker
加載ipvs相關(guān)內(nèi)核模塊
vim mod.sh
#!/bin/bash
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
modprobe br_netfilter
chmod +x mod.sh
bash mod.sh
scp mod.sh k8s-node1:/root/
scp mod.sh k8s-node2:/root/
發(fā)送后記得執(zhí)行一下
vim /etc/rc.local 如果重新開機,需要重新加載,需要寫在 /etc/rc.local 中開機自動加載
添加這句 bash /root.mod.sh
chmod +x /etc/rc.local
配置轉(zhuǎn)發(fā)相關(guān)參數(shù),否則可能會出錯
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF
使配置生效
sysctl --system
查看是否加載成功
lsmod | grep ip_vs
5、安裝kubeadm和kubelet
所有節(jié)點都需要安裝
- 配置阿里云的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/rpm-package-key.gpg
EOF
拷貝到另外兩臺機器
scp /etc/yum.repos.d/kubernetes.repo k8s-node1:/etc/yum.repos.d/kubernetes.repo
scp /etc/yum.repos.d/kubernetes.repo k8s-node2:/etc/yum.repos.d/kubernetes.repo
- 安裝
yum makecache fast -y
yum install -y kubelet kubeadm kubectl ipvsadm
#注意,這樣默認是下載最新版本
如果想下載舊版本,后面要跟上指定的版本號
yum install -y kubelet-1.22.2-0.x86_64 kubeadm-1.22.2-0.x86_64 kubectl-1.22.2-0.x86_64 ipvsadm
啟動kubelet
systemctl daemon-reload
systemctl enable kubelet && systemctl restart kubelet
systemctl status kubelet
(每個節(jié)點都會報錯),不用管master節(jié)點初始化之后就好了。
- 配置master節(jié)點初始化
- kubeadm init --help可以查看命令的具體參數(shù)用法
在master節(jié)點執(zhí)行初始化(node節(jié)點不用執(zhí)行)
參數(shù)詳情:
apiserver-advertise-address 指定apiserver的IP,即master節(jié)點的IP
image-repository 設(shè)置鏡像倉庫為國內(nèi)的阿里云鏡像倉庫
kubernetes-version 設(shè)置k8s的版本,跟步驟三的kubeadm版本一致
service-cidr 這是設(shè)置node節(jié)點的網(wǎng)絡(luò)的,暫時這樣設(shè)置
pod-network-cidr 這是設(shè)置node節(jié)點的網(wǎng)絡(luò)的,暫時這樣設(shè)置
cri-socket 設(shè)置cri使用cri-dockerd
查看版本
kubeadm version
kubeadm init --apiserver-advertise-address=192.168.0.35 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.27.2 --service-cidr=10.168.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock --ignore-preflight-errors=all
執(zhí)行完初始化的命令 查看一下回顯是否成功 返回0為成功
echo $?
kubeadm join 192.168.0.35:6443 --token 62kh2k.7lfpud7ridya1it7 \
--discovery-token-ca-cert-hash sha256:b55066a01216999577c2260bad6349ab8e293bff58ec9ea041b2c7c7bb51913e
初始化完成后根據(jù)提示的命令操作即可
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果使用的root用戶可以操作這條命令
export KUBECONFIG=/etc/kubernetes/admin.conf
可以查看到master
6、配置flannel網(wǎng)絡(luò)插件
完成master節(jié)點的時候k8s已經(jīng)叫我們?nèi)ヅ渲胮od網(wǎng)絡(luò)了。在k8s系統(tǒng)上Pod網(wǎng)絡(luò)的實現(xiàn)需要依賴于第三方插件進行種類有很多我們這里使用的flannel。
cd ~ && mkdir flannel && cd flannel
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
查看一下鏡像版本隨后使用docker拉取,所有節(jié)點都拉
vim kube-flannel.yml
拉取要用到的鏡像所有節(jié)點都要拉取
docker pull docker.io/flannel/flannel:v0.22.0
docker pull docker.io/flannel/flannel-cni-plugin:v1.1.2
重新加載文件
kubectl apply -f kube-flannel.yml
查看一下master節(jié)點的狀態(tài)
kubectl get nodes
從NoReady 變成了 Ready 那么我們的flannel就部署好了
7、Node節(jié)點加入集群操作
Node1 節(jié)點操作
kubeadm join 192.168.0.35:6443 --token 62kh2k.7lfpud7ridya1it7 \
--discovery-token-ca-cert-hash sha256:b55066a01216999577c2260bad6349ab8e293bff58ec9ea041b2c7c7bb51913e --cri-socket unix:///var/run/cri-dockerd.sock
再次查看狀態(tài),Node兩個節(jié)點也已經(jīng)加入成功
看下flannel運行狀態(tài)文章來源:http://www.zghlxwxcb.cn/news/detail-741623.html
kubectl get pods --namespace kube-flannel
至此搭建完成。文章來源地址http://www.zghlxwxcb.cn/news/detail-741623.html
到了這里,關(guān)于centos安裝部署Kubernetes(k8s)步驟使用kubeadm方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!