更新時間:2022-12-30 16:30:30 來源:動力節點 瀏覽1235次
K8s集群搭建過程中坑非常多,毫不夸張的說,如果自己踩坑搭建耗時幾天完全正常,這篇搭建集群教程是自己親自搭建總結的,已經避免我遇到的所有坑。
本篇將使用kubeadm搭建一個簡單的一主多從(一個控制節點對應兩個工作節點)的簡單K8s集群
步驟
1.準備集群服務器
主機名 | IP | 系統版本 | 角色 | 組件 |
master | 192.168.6.128 | CentOS Linux release 7.9.2009 (Core) | 控制節點 | docker,kubectl,kubeadm,kubelet |
node1 | 192.168.6.129 | CentOS Linux release 7.9.2009 (Core) | 工作節點1 | docker,kubectl,kubeadm,kubelet |
node2 | 192.168.6.130 | CentOS Linux release 7.9.2009 (Core) | 工作節點2 | docker,kubectl,kubeadm,kubelet |
工作流程:
2. 配置服務器環境
配置主機名解析,方便集群節點間的直接調用,
# 主機名解析 編輯三臺服務器的/etc/hosts文件,添加下面內容
192.168.90.128 master
192.168.90.129 node1
192.168.90.130 node2
時間同步
? kubernetes要求集群中的節點時間必須精確一致。
? 使用chronyd服務從網絡同步時間。
? 在三臺服務器中執行下面的命令
#啟動chronyd服務
systemctl start chronyd
#設置開機自啟
systemctl enable chronyd
#驗證時間是否一致
date
禁用iptable和firewalld服務
? kubernetes和docker 在運行的中會產生大量的iptables規則,為了不讓系統規則跟它們混淆,直接關閉系統的規則
? 注意:測試環境可以關了防火墻(firewalld),生成環境根據實際情況決定。
# 1 關閉firewalld服務
[root@master ~]# systemctl stop firewalld
# 關閉開機自啟
[root@master ~]# systemctl disable firewalld
# 2 關閉iptables服務
[root@master ~]# systemctl stop iptables
# 關閉開機自啟
[root@master ~]# systemctl disable iptables
禁用selinux
? selinux是linux系統下的一個安全服務,如果不關閉它,在安裝集群中會產生各種各樣的問題
# 編輯 /etc/selinux/config 文件,修改SELINUX的值為disable
# 注意修改完畢之后需要重啟服務器
SELINUX=disabled
禁用swap分區
? swap分區指的是虛擬內存分區,它的作用是物理內存使用完,之后將磁盤空間虛擬成內存來使用,啟用swap設備會對系統的性能產生非常負面的影響,因此kubernetes要求每個節點都要禁用swap設備,但是如果因為某些原因確實不能關閉swap分區,就需要在集群安裝過程中通過明確的參數進行配置說明
# 編輯分區配置文件/etc/fstab,注釋掉swap分區一行
# 注意修改完畢之后需要重啟linux服務
vim /etc/fstab
# 注釋掉 /dev/mapper/centos-swap swap
# /dev/mapper/centos-swap swap
修改linux的內核參數
# 修改linux的內核采納數,添加網橋過濾和地址轉發功能
# 編輯/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
# 加載網橋過濾模塊
[root@master ~]# modprobe br_netfilter
# 查看網橋過濾模塊是否加載成功
[root@master ~]# lsmod | grep br_netfilter
配置ipvs功能
? 在Kubernetes中Service有兩種帶來模型,一種是基于iptables的,一種是基于ipvs的兩者比較的話,ipvs的性能明顯要高一些,但是如果要使用它,需要手動載入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.為腳本添加執行權限
[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
# 4.執行腳本文件
[root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
# 5.查看對應的模塊是否加載成功
[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、查看當前鏡像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates
# 3、安裝特定版本的docker-ce
# 必須制定--setopt=obsoletes=0,否則yum會自動安裝更高版本
# 如果提示不存在 docker-ce-18.06.3.ce-3.el7 執行下方命令添加阿里云docker-ce.repo再執行
# 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、添加一個配置文件
#Docker 在默認情況下使用Vgroup Driver為cgroupfs,而Kubernetes推薦使用systemd來替代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、啟動dokcer
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker
安裝Kubernetes組件
# 1、由于kubernetes的鏡像在國外,速度比較慢,這里切換成國內的鏡像源
# 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、設置kubelet開機自啟
[root@master ~]# systemctl enable kubelet
以上就是動力節點小編介紹的"k8s集群搭建的過程",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習