1. 首页 > 软件安装教程 > 正文

Kubernetes安装-Kubernetes 1.26 for RHEL 9安装配置及升级迁移详细过程

1. 硬件环境检查

在安装Kubernetes之前,必须对服务器的硬件环境进行全面检查,确保满足Kubernetes 1.26的最低要求。更多学习教程www.fgedu.net.cn

# Master节点硬件检查
# 检查内存大小
# free -h
total used free shared buff/cache available
Mem: 16G 2.1G 12G 8.5M 1.8G 13G
Swap: 8G 0B 8G

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 8G 0 8G 0% /dev
tmpfs 8G 0 8G 0% /dev/shm
tmpfs 8G 8.5M 8G 1% /run
tmpfs 8G 0 8G 0% /sys/fs/cgroup
/dev/sda1 50G 15G 36G 30% /
/dev/sdb1 200G 20G 180G 10% /data

# 检查CPU核心数
# nproc
8

# Worker节点硬件检查
# 检查内存大小
# free -h
total used free shared buff/cache available
Mem: 8G 1.5G 5G 8.5M 1.5G 6G
Swap: 4G 0B 4G

# 检查CPU核心数
# nproc
4

生产环境建议:Master节点:至少4核CPU,8GB内存,100GB磁盘;Worker节点:至少2核CPU,4GB内存,100GB磁盘。网络:千兆网络接口,推荐万兆网络。

2. 操作系统检查

Kubernetes 1.26支持RHEL 7.3+、RHEL 8.0+、RHEL 9.0+等操作系统。本文以RHEL 9为例。学习交流加群风哥微信: itpux-com

# 检查操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.0 (Plow)

# 检查内核版本
# uname -r
5.14.0-70.22.1.el9_0.x86_64

# 检查SELinux状态
# getenforce
Disabled

# 关闭SELinux(如未关闭)
# vi /etc/selinux/config
SELINUX=disabled

# 检查防火墙状态
# systemctl status firewalld

# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

3. 安装准备

在安装Kubernetes之前,需要进行一系列准备工作,包括配置内核参数、安装依赖包、配置网络等。

# 配置内核参数
cat <
风哥提示:Kubernetes安装需要root权限,建议使用root账户进行安装。同时,所有节点的时间同步非常重要,建议配置NTP服务。

4. Kubernetes软件安装

现在开始安装Kubernetes 1.26软件,按照以下步骤进行。

# 安装kubeadm、kubelet和kubectl
sudo dnf install -y kubeadm-1.26.0 kubelet-1.26.0 kubectl-1.26.0
sudo systemctl enable kubelet

# 初始化Master节点
sudo kubeadm init –pod-network-cidr=10.244.0.0/16

# 配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 安装Flannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 加入Worker节点
# 在Worker节点上执行(使用Master节点初始化时生成的命令)
sudo kubeadm join :6443 –token –discovery-token-ca-cert-hash

5. Kubernetes配置

配置Kubernetes集群,包括网络配置、存储配置、RBAC配置等。

# 检查集群状态
kubectl cluster-info
kubectl get nodes

# 配置RBAC
kubectl create clusterrolebinding cluster-admin-binding –clusterrole=cluster-admin –user=admin

# 配置存储类
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/deployment.yaml

# 配置Ingress
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml

6. 测试验证

验证Kubernetes集群是否正常运行,包括节点状态、Pod状态和测试应用。学习交流加群风哥QQ113257174

# 检查集群状态
kubectl cluster-info
kubectl get nodes
kubectl get pods –all-namespaces

# 运行测试应用
kubectl create deployment nginx –image=nginx
kubectl expose deployment nginx –port=80 –type=NodePort
kubectl get services

# 访问测试应用
# 打开浏览器,访问 http://:

7. 备份配置

配置Kubernetes备份策略,确保集群数据和配置的安全。

# 创建备份目录
mkdir -p /backup/kubernetes

# 备份etcd数据
sudo ETCDCTL_API=3 etcdctl snapshot save /backup/kubernetes/etcd-snapshot.db –endpoints=https://127.0.0.1:2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key

# 备份集群配置
kubectl get all –all-namespaces -o yaml > /backup/kubernetes/k8s-all-resources.yaml

# 验证备份文件
ls -la /backup/kubernetes/
drwxr-xr-x 4 root root 4096 Mar 31 10:20 .
drwxr-xr-x 3 root root 4096 Mar 31 10:15 ..
-rw-r–r– 1 root root 123456789 Mar 31 10:20 etcd-snapshot.db
-rw-r–r– 1 root root 12345678 Mar 31 10:20 k8s-all-resources.yaml

# 配置自动备份
# 创建备份脚本
vi /root/backup_kubernetes.sh

#!/bin/bash

DATE=$(date +%Y%m%d)
BACKUP_DIR=”/backup/kubernetes”

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 执行备份
sudo ETCDCTL_API=3 etcdctl snapshot save $BACKUP_DIR/etcd-snapshot-$DATE.db –endpoints=https://127.0.0.1:2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key
kubectl get all –all-namespaces -o yaml > $BACKUP_DIR/k8s-all-resources-$DATE.yaml

# 保留最近7天的备份
find $BACKUP_DIR -name “etcd-snapshot-*.db” -mtime +7 -delete
find $BACKUP_DIR -name “k8s-all-resources-*.yaml” -mtime +7 -delete

# 给脚本添加执行权限
chmod +x /root/backup_kubernetes.sh

# 添加到crontab
crontab -e

# 添加以下内容(每天凌晨2点执行备份)
0 2 * * * /root/backup_kubernetes.sh

8. 升级迁移

Kubernetes的升级和迁移过程。

# 升级Kubernetes版本
# 1. 备份现有环境
sudo ETCDCTL_API=3 etcdctl snapshot save /backup/kubernetes/etcd-snapshot-before-upgrade.db –endpoints=https://127.0.0.1:2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key
kubectl get all –all-namespaces -o yaml > /backup/kubernetes/k8s-all-resources-before-upgrade.yaml

# 2. 升级Master节点
# 升级kubeadm
sudo dnf install -y kubeadm-1.26.1

# 升级控制平面
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.26.1

# 升级kubelet和kubectl
sudo dnf install -y kubelet-1.26.1 kubectl-1.26.1
sudo systemctl restart kubelet

# 3. 升级Worker节点
# 在每个Worker节点上执行
sudo dnf install -y kubeadm-1.26.1
sudo kubeadm upgrade node
sudo dnf install -y kubelet-1.26.1 kubectl-1.26.1
sudo systemctl restart kubelet

# 4. 验证升级结果
kubectl cluster-info
kubectl get nodes

# 从旧集群迁移到新集群

# 1. 在旧集群上创建备份
sudo ETCDCTL_API=3 etcdctl snapshot save /backup/kubernetes/etcd-snapshot.db –endpoints=https://127.0.0.1:2379 –cacert=/etc/kubernetes/pki/etcd/ca.crt –cert=/etc/kubernetes/pki/etcd/server.crt –key=/etc/kubernetes/pki/etcd/server.key
kubectl get all –all-namespaces -o yaml > /backup/kubernetes/k8s-all-resources.yaml

# 2. 将备份文件复制到新集群
scp -r /backup/kubernetes root@new-master:/backup/

# 3. 在新集群上安装Kubernetes
# 按照安装步骤在新服务器上安装Kubernetes

# 4. 恢复etcd数据
sudo ETCDCTL_API=3 etcdctl snapshot restore /backup/kubernetes/etcd-snapshot.db –data-dir=/var/lib/etcd

# 5. 导入集群配置
kubectl apply -f /backup/kubernetes/k8s-all-resources.yaml

# 6. 验证迁移结果
kubectl cluster-info
kubectl get nodes

风哥提示:Kubernetes升级和迁移前,建议先在测试环境进行演练,确保升级过程顺利。同时,备份所有重要数据和配置,以防万一。

9. 总结

本文详细介绍了Kubernetes 1.26 for RHEL 9的安装、配置、升级和迁移过程。通过按照本文的步骤操作,可以成功部署Kubernetes集群并确保其稳定运行。from:www.itpux.com

生产环境建议:
– 定期备份etcd数据和集群配置,建议每天执行一次全备份
– 监控Kubernetes集群性能,定期检查集群状态和日志
– 定期更新Kubernetes版本,确保系统安全性和性能
– 合理规划集群资源,避免资源不足
– 配置合适的网络插件和存储解决方案
– 对于生产环境,建议部署多Master节点高可用集群,提高可用性和可靠性

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息