k8s集群搭建

簡介

k8s集群有兩種方式

方式 優(yōu)勢 缺點
kubeadm 簡單、快速 無法更好的理解k8s各個組件之間的關(guān)系
二進制包安裝 繁瑣、復雜 可能更好的理解k8s集群組件的關(guān)系

并且集群也分為簡單版和復雜版,此教程采用kubeadm快速搭建一個簡單集群(只有一個maste節(jié)點,兩個工作節(jié)點)

機器規(guī)劃

注:機器至少是2核2G的配置

機器可以是虛擬機、也可以是三臺物理機器。我使用的是三臺centos7的虛擬機!

hostname ip地址 用途
server130 192.168.73.130 master節(jié)點
server131 192.168.73.131 node1節(jié)點
server132 192.168.73.132 node2節(jié)點

搭建教程

除特別說明外,以下命令需在三臺機器中都執(zhí)行,建議找一個可以同時在多臺機器中執(zhí)行命令的工具(mac環(huán)境下可以使用item2)

1、配置機器的host文件

vi /etc/hosts
#添加如下內(nèi)容
192.168.73.130 master
192.168.73.131 node1
192.168.73.132 node2

執(zhí)行ping master 看配置是否成功

2、禁用防火墻

#docker會產(chǎn)生很多端口規(guī)則,為了引起不必要的麻煩,自己關(guān)閉掉(反正這個環(huán)境只是學習使用的,生成環(huán)境不要這么做)
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables

3、禁用linux系統(tǒng)的安全服務(wù)
selinux是linux下的一個安全服務(wù),安裝軟件會產(chǎn)生各種奇葩問題,直接禁用掉

vi /etc/selinux/config
#設(shè)置如下內(nèi)容
SELINUX=disabled

4、禁用swap分區(qū)
作用是在物理內(nèi)存使用完之后虛擬磁盤空間作為內(nèi)存使用,開啟此會產(chǎn)生性能影響,在搭建k8s集群的時候如果開啟的話還需要特別說明

vi /etc/fstab
#注釋最后一行(/dev/mapper/centos-swap swap                    swap    defaults        0 0)

5、修改linux內(nèi)核參數(shù)

#修改linux內(nèi)核參數(shù),添加網(wǎng)橋過濾和地址轉(zhuǎn)發(fā)功能
vi /etc/sysctl.d/kubernetes.conf
# 添加如下配置
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

#  重新加載配置
sysctl -p
#加載網(wǎng)橋過濾模塊
modprobe br_netfilter
# 查看網(wǎng)橋過濾模塊是否加載成功
lsmod|grep br_netfilter

6、配置ipvs功能

#安裝ipset、ipvsadm
yum -y install ipset ipvsadm
#添加需要加載的模塊,寫入到腳本文件中
vi /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

#為腳本文件添加執(zhí)行權(quán)限
chmod +x /etc/sysconfig/modules/ipvs.modules
#執(zhí)行腳本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
#查詢對應模塊是否加載成功
lsmod |grep -e ip_vs -e nf_conntrack_ipv4

7、安裝docker
已經(jīng)安裝過了就跳過

參考centos安裝docker的官方文檔

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo docker run hello-world
#配置docker的倉庫鏡像地址
vi /etc/docker/daemon.json
#內(nèi)容如下
{
  "exec-opts":["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://39dvdikp.mirror.aliyuncs.com"]
}

8、統(tǒng)一重啟服務(wù)器

reboot

9、安裝k8s組件

#配置kubernetes的鏡像源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#安裝kubernetes的相關(guān)組件
yum -y install kubeadm kubelet kubectl

#配置kubelet的cgroup
vi /etc/sysconfig/kubelet
#內(nèi)容如下
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

#設(shè)置為開機自啟動并啟動 
systemctl enable kubelet

10、集群初始化(僅在master上執(zhí)行)

#apiserver-advertise-address為master的ip地址
#kubernetes-version為當前一步安裝的k8s的版本(kubectl version查看安裝的k8s組件版本)
kubeadm init \
--apiserver-advertise-address=192.168.73.130 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.22.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all  \
--v=6

最后出現(xiàn)Your Kubernetes control-plane has initialized successfully!內(nèi)容則表示集群初始化成功。最后按照安裝成功后的提示語執(zhí)行一些命令即可。
注意:在加入節(jié)點之前需要先在master上安裝網(wǎng)絡(luò)組件

image.png

11、安裝網(wǎng)絡(luò)組件(僅在master上執(zhí)行)

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

12、將其他節(jié)點加入到集群中(在非master節(jié)點上執(zhí)行)

# 這個命令在集群初始化成功后會提示 拷貝自己對應的命令執(zhí)行即可
kubeadm join 172.16.255.130:6443 --token adyqwv.wj3x6lkok9xy1gg2 \
    --discovery-token-ca-cert-hash sha256:a00f68126fa6afaee5bd77db5a2f389f0a8b4a3ef9d961814f2babf2f815c9ba

13、測試(僅在master上執(zhí)行)

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc 
#在 web 瀏覽器輸入以下地址,會返回 nginx 歡迎界面
http://192.168.73.130:32409/ (該端口為kubectl get pod,svc命令獲取)

結(jié)束

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容