更新時(shí)間:2022-12-30 16:30:30 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1271次
K8s集群搭建過(guò)程中坑非常多,毫不夸張的說(shuō),如果自己踩坑搭建耗時(shí)幾天完全正常,這篇搭建集群教程是自己親自搭建總結(jié)的,已經(jīng)避免我遇到的所有坑。
本篇將使用kubeadm搭建一個(gè)簡(jiǎn)單的一主多從(一個(gè)控制節(jié)點(diǎn)對(duì)應(yīng)兩個(gè)工作節(jié)點(diǎn))的簡(jiǎn)單K8s集群
步驟
1.準(zhǔn)備集群服務(wù)器
主機(jī)名 | IP | 系統(tǒng)版本 | 角色 | 組件 |
master | 192.168.6.128 | CentOS Linux release 7.9.2009 (Core) | 控制節(jié)點(diǎn) | docker,kubectl,kubeadm,kubelet |
node1 | 192.168.6.129 | CentOS Linux release 7.9.2009 (Core) | 工作節(jié)點(diǎn)1 | docker,kubectl,kubeadm,kubelet |
node2 | 192.168.6.130 | CentOS Linux release 7.9.2009 (Core) | 工作節(jié)點(diǎn)2 | docker,kubectl,kubeadm,kubelet |
工作流程:
2. 配置服務(wù)器環(huán)境
配置主機(jī)名解析,方便集群節(jié)點(diǎn)間的直接調(diào)用,
# 主機(jī)名解析 編輯三臺(tái)服務(wù)器的/etc/hosts文件,添加下面內(nèi)容
192.168.90.128 master
192.168.90.129 node1
192.168.90.130 node2
時(shí)間同步
? kubernetes要求集群中的節(jié)點(diǎn)時(shí)間必須精確一致。
? 使用chronyd服務(wù)從網(wǎng)絡(luò)同步時(shí)間。
? 在三臺(tái)服務(wù)器中執(zhí)行下面的命令
#啟動(dòng)chronyd服務(wù)
systemctl start chronyd
#設(shè)置開機(jī)自啟
systemctl enable chronyd
#驗(yàn)證時(shí)間是否一致
date
禁用iptable和firewalld服務(wù)
? kubernetes和docker 在運(yùn)行的中會(huì)產(chǎn)生大量的iptables規(guī)則,為了不讓系統(tǒng)規(guī)則跟它們混淆,直接關(guān)閉系統(tǒng)的規(guī)則
? 注意:測(cè)試環(huán)境可以關(guān)了防火墻(firewalld),生成環(huán)境根據(jù)實(shí)際情況決定。
# 1 關(guān)閉firewalld服務(wù)
[root@master ~]# systemctl stop firewalld
# 關(guān)閉開機(jī)自啟
[root@master ~]# systemctl disable firewalld
# 2 關(guān)閉iptables服務(wù)
[root@master ~]# systemctl stop iptables
# 關(guān)閉開機(jī)自啟
[root@master ~]# systemctl disable iptables
禁用selinux
? selinux是linux系統(tǒng)下的一個(gè)安全服務(wù),如果不關(guān)閉它,在安裝集群中會(huì)產(chǎn)生各種各樣的問(wèn)題
# 編輯 /etc/selinux/config 文件,修改SELINUX的值為disable
# 注意修改完畢之后需要重啟服務(wù)器
SELINUX=disabled
禁用swap分區(qū)
? swap分區(qū)指的是虛擬內(nèi)存分區(qū),它的作用是物理內(nèi)存使用完,之后將磁盤空間虛擬成內(nèi)存來(lái)使用,啟用swap設(shè)備會(huì)對(duì)系統(tǒng)的性能產(chǎn)生非常負(fù)面的影響,因此kubernetes要求每個(gè)節(jié)點(diǎn)都要禁用swap設(shè)備,但是如果因?yàn)槟承┰虼_實(shí)不能關(guān)閉swap分區(qū),就需要在集群安裝過(guò)程中通過(guò)明確的參數(shù)進(jìn)行配置說(shuō)明
# 編輯分區(qū)配置文件/etc/fstab,注釋掉swap分區(qū)一行
# 注意修改完畢之后需要重啟linux服務(wù)
vim /etc/fstab
# 注釋掉 /dev/mapper/centos-swap swap
# /dev/mapper/centos-swap swap
修改linux的內(nèi)核參數(shù)
# 修改linux的內(nèi)核采納數(shù),添加網(wǎng)橋過(guò)濾和地址轉(zhuǎn)發(fā)功能
# 編輯/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 重新加載配置
[root@master ~]# sysctl -p
# 加載網(wǎng)橋過(guò)濾模塊
[root@master ~]# modprobe br_netfilter
# 查看網(wǎng)橋過(guò)濾模塊是否加載成功
[root@master ~]# lsmod | grep br_netfilter
配置ipvs功能
? 在Kubernetes中Service有兩種帶來(lái)模型,一種是基于iptables的,一種是基于ipvs的兩者比較的話,ipvs的性能明顯要高一些,但是如果要使用它,需要手動(dòng)載入ipvs模塊
# 1.安裝ipset和ipvsadm
[root@master ~]# yum install ipset ipvsadm -y
# 2.添加需要加載的模塊寫入腳本文件
[root@master ~]# cat <<EOF> /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
# 3.為腳本添加執(zhí)行權(quán)限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
# 4.執(zhí)行腳本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
# 5.查看對(duì)應(yīng)的模塊是否加載成功
[root@master ~]# lsmod | grep -e -ip_vs -e nf_conntrack_ipv4
安裝docker
# 1、切換鏡像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d.docker-ce.repo
# 2、查看當(dāng)前鏡像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates
# 3、安裝特定版本的docker-ce
# 必須制定--setopt=obsoletes=0,否則yum會(huì)自動(dòng)安裝更高版本
# 如果提示不存在 docker-ce-18.06.3.ce-3.el7 執(zhí)行下方命令添加阿里云docker-ce.repo再執(zhí)行
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7 -y
# 4、添加一個(gè)配置文件
#Docker 在默認(rèn)情況下使用Vgroup Driver為cgroupfs,而Kubernetes推薦使用systemd來(lái)替代cgroupfs
[root@master ~]# mkdir /etc/docker
[root@master ~]# cat <<EOF> /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
EOF
# 5、啟動(dòng)dokcer
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker
安裝Kubernetes組件
# 1、由于kubernetes的鏡像在國(guó)外,速度比較慢,這里切換成國(guó)內(nèi)的鏡像源
# 2、/etc/yum.repos.d/kubernetes.repo 添加下面的配置
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 3、安裝kubeadm、kubelet和kubectl
[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
# 4、配置kubelet的cgroup
#編輯/etc/sysconfig/kubelet
vim /etc/sysconfig/kubelet
#添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
# 5、設(shè)置kubelet開機(jī)自啟
[root@master ~]# systemctl enable kubelet
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"k8s集群搭建的過(guò)程",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743