本文将在 Rocky Linux 9.2 中使用 kubeadm 部署 Kubernetes 1.27,同时配置 containerd、calico 和 BGP 等组件,还将使用 OpenELB 作为 LoadBalancer,BIRD 模拟物理路由器,以及 kube-vip 实现 control-plane 高可用,为了确保系统的稳定性,所有 k8s 相关组件都将固定版本安装。
环境说明
序号 | CPU | 内存(G) | 操作系统 | IP | 主机名 | 备注 |
1 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.51 | bgp-k8s-01.tiga.cc | master |
2 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.52 | bgp-k8s-02.tiga.cc | master |
3 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.53 | bgp-k8s-03.tiga.cc | master |
4 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.54 | bgp-k8s-04.tiga.cc | master |
5 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.55 | bgp-k8s-05.tiga.cc | worker |
6 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.56 | bgp-k8s-06.tiga.cc | worker |
7 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.57 | bgp-k8s-07.tiga.cc | worker |
8 | 2 | 12 | Rocky Linux 9.2 | 192.168.3.58 | bgp-k8s-08.tiga.cc | worker |
9 | 2 | 2 | Rocky Linux 9.2 | 192.168.3.61 | bird-01.tiga.cc | router |
准备工作
1. 检查mac和product_uuid
确保同一个 k8s 集群内的所有节点的 mac 地址和 product_uuid 均唯一,部署前需检查信息:
检查mac地址 cat /sys/class/dmi/id/product_uuid
2. 修改host文件
编辑/etc/hosts
文件,添加各节点的 IP 和主机名映射:
echo '192.168.3.50 bgp-k8s-api-server.tiga.cc' >> /etc/hosts echo '192.168.3.51 bgp-k8s-01.tiga.cc' >> /etc/hosts echo '192.168.3.52 bgp-k8s-02.tiga.cc' >> /etc/hosts echo '192.168.3.53 bgp-k8s-03.tiga.cc' >> /etc/hosts echo '192.168.3.54 bgp-k8s-04.tiga.cc' >> /etc/hosts echo '192.168.3.55 bgp-k8s-05.tiga.cc' >> /etc/hosts echo '192.168.3.56 bgp-k8s-06.tiga.cc' >> /etc/hosts echo '192.168.3.57 bgp-k8s-07.tiga.cc' >> /etc/hosts echo '192.168.3.58 bgp-k8s-08.tiga.cc' >> /etc/hosts echo '192.168.3.61 bird-01.tiga.cc' >> /etc/hosts
3. 关闭firewalld
禁用并停止 firewalld 服务:
systemctl disable firewalld systemctl stop firewalld
4. 关闭swap
编辑/etc/fstab
文件注释掉 swap:
sed -i 's:/dev/mapper/rl-swap:#/dev/mapper/rl-swap:g' /etc/fstab
5. 关闭selinux
编辑/etc/selinux/config
和/etc/sysconfig/selinux
文件,将 SELINUX=enforcing 改为 SELINUX=disabled:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux setenforce 0
6. 安装ipvs
安装并启动 ipvsadm:
yum install -y ipvsadm systemctl enable --now ipvsadm
7. 开启路由转发
编辑/etc/sysctl.conf
文件,添加 net.ipv4.ip_forward=1:
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
8. 加载bridge
安装 epel-release 和 bridge-utils:
yum install -y epel-release yum install -y bridge-utils modprobe br_netfilter echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
安装containerd
按照官方文档进行 containerd 的安装和配置:
添加Docker仓库 yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 查看所有containerd版本 yum list containerd.io --showduplicates | sort -r 安装指定版本的containerd yum install -y containerd.io-1.6.21 systemctl start containerd systemctl enable containerd
确认containerd是否安装成功:
containerd -v 输出示例:containerd containerd.io 1.6.21 3dce8eb055cbb6872793272b4f20ed16117344f8
设置crictl的CRI endpoint为containerd:
echo 'runtime-endpoint: unix:///run/containerd/containerd.sock' >> /etc/crictl.yaml echo 'image-endpoint: unix:///run/containerd/containerd.sock' >> /etc/crictl.yaml
安装Kubernetes组件
添加Kubernetes仓库并安装kubelet、kubeadm和kubectl:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kube* EOF yum install -y kubelet-1.27.2 kubeadm-1.27.2 kubectl-1.27.2 --disableexcludes=kubernetes systemctl enable --now kubelet
初始化Kubernetes主节点:
kubeadm init --pod-network-cidr=10.244.0.0/16
记录下kubeadm join
命令用于后续加入节点。
安装网络插件Calico
在主节点上应用Calico网络配置:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
验证Pod状态:
kubectl get pods -n kube-system -o wide
加入工作节点到集群
在每个工作节点上运行之前记录的kubeadm join
命令,
sudo kubeadm join <master-ip>:<master-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
验证集群状态:
kubectl get nodes
所有节点的状态应为Ready,这表明它们已成功加入集群并可以运行Pod。
常见问题与解答
问题1:如何检查Kubernetes集群是否正常运行?
答:可以通过以下命令来检查集群状态:
kubectl get nodes kubectl get pods --all-namespaces -o wide
所有节点和Pod的状态都应为Running,如果有任何NotReady的状态,需要检查相关日志以找出问题所在。
问题2:如何升级Kubernetes集群的版本?
答:升级Kubernetes集群需要以下步骤:
1、备份数据:确保所有重要数据和应用都已备份。
2、更新Kubeadm:首先更新Kubeadm工具。
3、升级主节点:使用kubeadm upgrade apply
命令升级主节点。
4、升级工作节点:在工作节点上使用相同的命令完成升级。
5、验证升级:最后通过检查节点状态和Pod状态来验证升级是否成功。
各位小伙伴们,我刚刚为大家分享了有关“Rocky Linux服务器安装配置Kubernetes教程”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1092560.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复