1. 統(tǒng)一環(huán)境配置(構(gòu)建Kubernetes基礎(chǔ)系統(tǒng)鏡像防止后面逐臺安裝)
此處為加固印象到逊,本人重新構(gòu)建球昨,技術(shù)嘛彻亲,多動手
- 節(jié)點(diǎn)配置信息規(guī)劃
節(jié)點(diǎn) | IP | 系統(tǒng)配置信息 | 配置 | 磁盤 |
---|---|---|---|---|
kubernetes-master-01 | 192.168.141.150 | Master Ubuntu Server 18.04 | 2核2G | 20G |
kubernetes-master-02 | 192.168.141.151 | Master Ubuntu Server 18.04 | 2核2G | 20G |
kubernetes-master-03 | 192.168.141.152 | Master Ubuntu Server 18.04 | 2核2G | 20G |
kubernetes-node-01 | 192.168.141.160 | Node Ubuntu Server 18.04 | 2核4G | 20G |
kubernetes-node-02 | 192.168.141.161 | Node Ubuntu Server 18.04 | 2核4G | 20G |
kubernetes-node-03 | 192.168.141.162 | Node Ubuntu Server 18.04 | 2核4G | 20G |
①. 操作系統(tǒng)的配置項(xiàng)
- 關(guān)閉交換空間
swapoff -a
- 避免開機(jī)啟動交換空間
vi /etc/fstab
注釋 swap 開頭的行- 關(guān)閉防火墻
ufw disable
- 配置 DNS
vi /etc/systemd/resolved.conf
取消 DNS 行注釋堕担,并增加 DNS 配置如:114.114.114.114,修改后重啟下計(jì)算機(jī)
reboot
②. 安裝 Docker
見之前博客:構(gòu)建kubernetes基礎(chǔ)系統(tǒng)鏡像-安裝Docker
③. 配置 Docker 加速器
見之前博客:構(gòu)建kubernetes基礎(chǔ)系統(tǒng)鏡像-安裝Docker(國內(nèi)鏡像加速器可能會很卡座掘,請?zhí)鎿Q成你自己阿里云鏡像加速器)
④. 安裝 kubeadm递惋,kubelet,kubectl
構(gòu)建kubernetes基礎(chǔ)系統(tǒng)鏡像-基于kubeadm安裝kubernetes環(huán)境
⑤. 同步時(shí)間
- 設(shè)置時(shí)區(qū)
dpkg-reconfigure tzdata
選擇 Asia(亞洲)
選擇 Shanghai(上海)- 時(shí)間同步
- 安裝 ntpdate
apt-get install ntpdate
- 設(shè)置系統(tǒng)時(shí)間與網(wǎng)絡(luò)時(shí)間同步(cn.pool.ntp.org 位于中國的公共 NTP 服務(wù)器)
ntpdate cn.pool.ntp.org
- 將系統(tǒng)時(shí)間寫入硬件時(shí)間
hwclock –systohc
- 確認(rèn)時(shí)間
date
自行對照與系統(tǒng)時(shí)間是否一致
⑥. 配置 IPVS
- 安裝系統(tǒng)工具
apt-get install -y ipset ipvsadm
- 配置并加載 IPVS 模塊
mkdir -p /etc/sysconfig/modules/
vim /etc/sysconfig/modules/ipvs.modules
- 輸入如下內(nèi)容
#!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4
- 4.執(zhí)行腳本雹顺,注意:如果系統(tǒng)重啟則需要重新運(yùn)行該腳本
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
設(shè)置腳本權(quán)限,執(zhí)行腳本廊遍,查看信息
執(zhí)行腳本輸出如下:
image.png
⑦. 配置內(nèi)核參數(shù)
- 配置參數(shù)
vim /etc/sysctl.d/k8s.conf
- 輸入如下內(nèi)容
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_nonlocal_bind = 1 net.ipv4.ip_forward = 1 vm.swappiness=0
- 應(yīng)用參數(shù)
sysctl –system
4.應(yīng)用參數(shù)輸出如下(找到 Applying /etc/sysctl.d/k8s.conf 開頭的日志)
image.png
⑧. 修改 cloud.cfg
vim /etc/cloud/cloud.cfg
該配置默認(rèn)為 false嬉愧,修改為 true 即可preserve_hostname: true
以上配置完成后作為Kubernetes基礎(chǔ)系統(tǒng)鏡像,以此為基礎(chǔ)復(fù)制其他集群
2. 單獨(dú)節(jié)點(diǎn)配置
為 Master 和 Node 節(jié)點(diǎn)單獨(dú)配置對應(yīng)的 IP 和 主機(jī)名
①. 配置 IP
- 編輯配置文件
vim /etc/netplan/50-cloud-init.yaml
image.png- 配置生效
netplan apply
②. 配置主機(jī)名
- 修改主機(jī)名
hostnamectl set-hostname kubernetes-master-01
- 配置 hosts(命令)
cat >> /etc/hosts << EOF > 192.168.2.150 kubernetes-master-01 > EOF
3. Master節(jié)點(diǎn)安裝 HAProxy + Keepalived
①. 創(chuàng)建 HAProxy 啟動腳本(kubernetes-master-01 執(zhí)行)
mkdir -p /usr/local/kubernetes/lb
vi /usr/local/kubernetes/lb/start-haproxy.sh
- 輸入內(nèi)容如下
#!/bin/bash # 修改為你自己的 Master 地址 MasterIP1=192.168.141.150 MasterIP2=192.168.141.151 MasterIP3=192.168.141.152 # 這是 kube-apiserver 默認(rèn)端口,不用修改 MasterPort=6443 # 容器將 HAProxy 的 6444 端口暴露出去 docker run -d --restart=always --name HAProxy-K8S -p 6444:6444 \ -e MasterIP1=$MasterIP1 \ -e MasterIP2=$MasterIP2 \ -e MasterIP3=$MasterIP3 \ -e MasterPort=$MasterPort \ wise2c/haproxy-k8s
- 設(shè)置權(quán)限
chmod +x start-haproxy.sh
②. 創(chuàng)建 Keepalived 啟動腳本(kubernetes-master-01 執(zhí)行)
mkdir -p /usr/local/kubernetes/lb
vi /usr/local/kubernetes/lb/start-keepalived.sh
- 輸入內(nèi)容如下
#!/bin/bash # 修改為你自己的虛擬 IP 地址 VIRTUAL_IP=192.168.141.200 # 虛擬網(wǎng)卡設(shè)備名 INTERFACE=ens33 # 虛擬網(wǎng)卡的子網(wǎng)掩碼 NETMASK_BIT=24 # HAProxy 暴露端口喉前,內(nèi)部指向 kube-apiserver 的 6443 端口 CHECK_PORT=6444 # 路由標(biāo)識符 RID=10 # 虛擬路由標(biāo)識符 VRID=160 # IPV4 多播地址没酣,默認(rèn) 224.0.0.18 MCAST_GROUP=224.0.0.18 docker run -itd --restart=always --name=Keepalived-K8S \ --net=host --cap-add=NET_ADMIN \ -e VIRTUAL_IP=$VIRTUAL_IP \ -e INTERFACE=$INTERFACE \ -e CHECK_PORT=$CHECK_PORT \ -e RID=$RID \ -e VRID=$VRID \ -e NETMASK_BIT=$NETMASK_BIT \ -e MCAST_GROUP=$MCAST_GROUP \ wise2c/keepalived-k8s
VIRTUAL_IP:可為自定義網(wǎng)段的任意ip,未被占用即可卵迂,此處ip指代下文中的VIP
- 設(shè)置權(quán)限
chmod +x start-keepalived.sh
③. 復(fù)制腳本到其它 Master 地址
- 分別在 kubernetes-master-02 和 kubernetes-master-03 執(zhí)行創(chuàng)建工作目錄命令
mkdir -p /usr/local/kubernetes/lb- 將 kubernetes-master-01 中的腳本拷貝至其它 Master
scp start-haproxy.sh start-keepalived.sh 192.168.2.151:/usr/local/kubernetes/lb
scp start-haproxy.sh start-keepalived.sh 192.168.2.152:/usr/local/kubernetes/lb
image.png
如上輸入yes,并輸入對應(yīng)服務(wù)器的密碼- 分別在 3 個(gè) Master 中啟動容器(執(zhí)行腳本)
sh /usr/local/kubernetes/lb/start-haproxy.sh && sh /usr/local/kubernetes/lb/start-keepalived.sh
- 查看容器運(yùn)行情況和網(wǎng)卡綁定的虛擬 IP
image.png
image.png
特別注意:Keepalived 會對 HAProxy 監(jiān)聽的 6444 端口進(jìn)行檢測裕便,如果檢測失敗即認(rèn)定本機(jī) HAProxy 進(jìn)程異常,會將 VIP 漂移到其他節(jié)點(diǎn)见咒,所以無論本機(jī) Keepalived 容器異吵ニィ或 HAProxy 容器異常都會導(dǎo)致 VIP 漂移到其他節(jié)點(diǎn)
4. 部署 Kubernetes 集群
初始化 Master
①. 創(chuàng)建工作目錄
mkdir -p /usr/local/kubernetes/cluster
導(dǎo)出配置文件到工作目錄
kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
②. 修改配置文件,如圖:
image.png
在1.19版本之前,kubeadm部署方式啟用ipvs模式時(shí),初始化配置文件需要添加以下內(nèi)容:
image.png
之后如下:
image.png
見配置項(xiàng):https://kubernetes.io/docs/reference/config-api/kube-proxy-config.v1alpha1/
③. kubeadm 初始化
kubeadm init --config=kubeadm.yml --upload-certs | tee kubeadm-init.log
image.png
配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
驗(yàn)證是否成功
kubectl get node
image.png
④. 安裝網(wǎng)絡(luò)插件
參考官方文檔安裝:https://docs.projectcalico.org/getting-started/kubernetes/quickstart
下載文件,方便更改
wget https://docs.projectcalico.org/v3.19/manifests/calico.yaml
更改默認(rèn)的網(wǎng)段,前面有說明
vim calico.yaml
將 192.168.0.0/16 修改為 10.244.0.0/16
命令快速查找
顯示行號::set number
查找字符:/要查找的字符下翎,輸入小寫 n 下一個(gè)匹配項(xiàng)缤言,輸入大寫 N 上一個(gè)匹配項(xiàng)
安裝(Master 節(jié)點(diǎn)操作)
kubectl apply -f calico.yaml
image.png
確認(rèn)安裝是否成功
watch kubectl get pods --all-namespaces
需要等待所有狀態(tài)為 Running,注意時(shí)間可能較久视事,3 - 5 分鐘的樣子
⑤. 加入master節(jié)點(diǎn)
- 查看kubeadm-init.log文件,獲取join操作命令
cat /usr/local/kubernetes/cluster/kubeadm-init.log
kubernetes-master-02和kubernetes-master-03分別執(zhí)行
image.png
⑥. 6.加入node節(jié)點(diǎn)
kubernetes-node-01胆萧,kubernetes-node-02,kubernetes-node-03分別執(zhí)行
image.png
根據(jù)次版本核配置俐东,本人已搭建集群與高可用集群環(huán)境跌穗,如遇到相關(guān)問題,未在文章中說明虏辫,可聯(lián)系本人
謝謝大家關(guān)注蚌吸,點(diǎn)個(gè)贊唄~
如需轉(zhuǎn)載請標(biāo)明出處,謝謝~~