文章目錄
- 前言
- 三個節點的主機名
- 所有節點操作
- 主機名和ip解析
- 關閉交換分區,關閉防火墻,關閉selinux
- 更換阿里云yum源
- 時間同步
- 修改內核參數
- 修改系統最大打開文件數
- 開啟bridge網橋過濾,加載br_netfilter模塊,加載配置文件
- 安裝ipset及ipvsadm
- 配置ipvsadm模塊加載方式
- 授權、運行、檢查是否加載
- 安裝containerd
- 安裝一些系統工具、添加軟件源信息、修改倉庫地址為阿里云、創建緩存、安裝containerd、啟動containerd
- 生成并修改containerd默認配置文件
- 重啟containerd,設置containerd為開啟自啟
- 安裝kubelet、kubeadm、kubectl
- kubernetes 阿里云YUM源
- 查看當前可安裝版本
- 設置cgroup
- 設置kubelet開機自啟
- master節點操作
- 初始化群集
- 添加k8s快捷鍵
- 其他節點操作
- 加入k8s群集(根據提示,按照自己的來)
- 所有節點操作
- 集群網絡插件部署 calico
- 鏡像壓縮包,導入到所有節點中
- master節點操作
- 獲取calico安裝清單
- 部署calico
- 最后結果
前言
三臺機器
可安可不安的都裝上了
沒有太多解釋,基本都是命令,因為命令很多,加上解釋就顯得很亂
如果是初始環境可直接從頭到尾復制粘貼,命令都驗證過
過程有疑問可私信或評論
操作系統版本是rocky9.4
容器運行時是containerd
是pve的虛擬機
三個節點的主機名
我這里是三臺機器,需要先設置好主機名
hostnamectl set-hostname testk8s1
hostnamectl set-hostname testk8s2
hostnamectl set-hostname testk8s3
所有節點操作
主機名和ip解析
cat >> /etc/hosts << EOF
10.20.21.166 testk8s1
10.20.21.167 testk8s2
10.20.21.168 testk8s3
EOF
關閉交換分區,關閉防火墻,關閉selinux
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
更換阿里云yum源
cd /etc/yum.repos.d
mkdir bak
cp *repo* bak/sed -e 's|^mirrorlist=|#mirrorlist=|g' \-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \-i.bak \/etc/yum.repos.d/rocky*.repodnf makecache
時間同步
dnf install chrony
vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# pool 2.rocky.pool.ntp.org iburst # 注釋該行,添加如下兩行,理論上想添加多少時間服務器都可以
Server ntp.aliyun.com iburst # 阿里時間源服務器
Server time1.cloud.tencent.com iburst # 騰訊時間源服務器
systemctl enable --now chronyd
date
修改內核參數
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF
sysctl -p
修改系統最大打開文件數
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
開啟bridge網橋過濾,加載br_netfilter模塊,加載配置文件
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
modprobe br_netfilter && lsmod | grep br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
安裝ipset及ipvsadm
yum -y install ipset ipvsadm
配置ipvsadm模塊加載方式
cat > /lib/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
授權、運行、檢查是否加載
chmod 755 /lib/modules/ipvs.modules && bash /lib/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack
安裝containerd
安裝一些系統工具、添加軟件源信息、修改倉庫地址為阿里云、創建緩存、安裝containerd、啟動containerd
dnf install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
dnf makecache
dnf install containerd -y
systemctl enable --now containerd.service
生成并修改containerd默認配置文件
containerd config default > /etc/containerd/config.toml
vim /etc/containerd/config.toml
修改帶有#的即可
[plugins."io.containerd.grpc.v1.cri"]...sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8" # 修改containerd鏡像拉取地址為阿里云...[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]...SystemdCgroup = true # 啟動Cgroup
重啟containerd,設置containerd為開啟自啟
systemctl daemon-reload
systemctl restart containerd.service
systemctl enable containerd --now
安裝kubelet、kubeadm、kubectl
kubernetes 阿里云YUM源
cat > /etc/yum.repos.d/k8s.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
查看當前可安裝版本
dnf list kubeadm.x86_64 --showduplicates | sort -r
dnf list kubelet.x86_64 --showduplicates | sort -r
dnf list kubectl.x86_64 --showduplicates | sort -r
安裝指定版本
dnf -y install kubeadm-1.28.2-0 kubelet-1.28.2-0 kubectl-1.28.2-0
設置cgroup
tee > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF
設置kubelet開機自啟
systemctl enable kubelet
master節點操作
初始化群集
注:這里已經指定了鏡像源為阿里云,一般不會出現鏡像下載不下來的情況,如果出現,通過kubectl descirbe pod名稱找到鏡像名稱,通過本機下載鏡像上傳到服務器
kubeadm init --kubernetes-version=v1.28.2 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=10.20.21.166
根據提示進行初始化操作
添加k8s快捷鍵
yum install -y bash-completion
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
其他節點操作
加入k8s群集(根據提示,按照自己的來)
kubeadm join 10.20.21.166:6443 --token neo62m.wz0vo8i092u22rkp \--discovery-token-ca-cert-hash sha256:2af19bd4a05e759c561b9ec346c0a27da5a56fe17449e6b00720e8cd77af9810
所有節點操作
集群網絡插件部署 calico
因為鏡像不好下載,所以我已經傳到csdn上了,看下我上傳的資源下載下來就行
鏡像壓縮包,導入到所有節點中
注:containerd導入鏡像要指定命名空間!!!
tar xf calico_v3.25.0.tar
cd calicofor img in *.tar; doctr -n k8s.io images import "$img"
done
master節點操作
獲取calico安裝清單
wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml --no-check-certificate
如果獲取不到,瀏覽器訪問
https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
然后復制即可
部署calico
kubectl apply -f calico.yaml
最后結果