Kubernetes 部署教程 (Rocky 部署 k8s)
2025-02-20
目录
- 一、虚拟机配置
- 二、安装 Rocky 系统
- 1. 选择软件
- 2. 硬盘分区选择
- 首先选择自定义,点击完成
- 然后选择标准分区,点击 "自动创建"
- 删除 SWAP 分区
- 将剩余空间分配给其他分区
- 完成磁盘分区
- 3. 设置 root 密码,关闭kdump选项,开始安装
- 三、配置 Rocky 系统
- 1. 配置软件源
- 2. 关闭 selinux
- 3. 开启内核转发
- 4. 关闭 firewall
- 5. 更新系统
- 6. 安装并配置docker
- 7. 安装和配置iptables
- 1. 执行命令安装iptables
- 2. 设置开机启动iptables
- 8. 开启 IPVS
- 1. 安装相关组件
- 2. 开启相关组件
- 9. 安装 Kubernetes
- 10. 关闭电脑
- 四、克隆虚拟机
- 五、为两台虚拟机配置主机名和静态IP地址
- 1. 启动两台虚拟机
- 2. 更改主机名
- 3. 设置静态IP地址
- 重启两台虚拟机
- 六、部署Kubernetes
- 七、解决K8S报错
- 八、解决 Node 节点 NotReady 问题
- 九、安装Dashboard
一、虚拟机配置
二、安装 Rocky 系统
1. 选择软件
2. 硬盘分区选择
首先选择自定义,点击完成
然后选择标准分区,点击 “自动创建”
删除 SWAP 分区
将剩余空间分配给其他分区
完成磁盘分区
点击两次完成后,出现此弹窗,选择接受更改
3. 设置 root 密码,关闭kdump选项,开始安装
三、配置 Rocky 系统
1. 配置软件源
首先删除所有现有软件源
rm -rf /etc/yum.repos.d/*
然后创建并编辑新的repo文件
[BaseOS]
name=BaseOS
gpgcheck=0
baseurl=https://mirrors.aliyun.com/rockylinux/9/BaseOS/x86_64/os/
[AppStream]
name=AppStream
gpgcheck=0
baseurl=https://mirrors.aliyun.com/rockylinux/9/AppStream/x86_64/os/
[Docker]
name=Docker
gpgcheck=0
baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
[Kubernetes]
name=Kubernetes
gpgcheck=0
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
2. 关闭 selinux
3. 开启内核转发
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
4. 关闭 firewall
systemctl disable firewalld
5. 更新系统
执行命令等待即可
yum update -y
6. 安装并配置docker
先执行命令安装docker
yum install -y docker-ce*
然后设置开机启动 docker
systemctl enable docker
systemctl enable containerd
最后编辑docker配置文件
{
"iptables": false,
"ip6tables": false,
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors" : ["http://hub-mirror.c.163.com"]
}
7. 安装和配置iptables
1. 执行命令安装iptables
yum install -y iptables*
2. 设置开机启动iptables
systemctl enable iptables
8. 开启 IPVS
1. 安装相关组件
yum install -y ipvsadm ipset sysstat conntrack libseccomp
2. 开启相关组件
echo "modprobe br_netfilter" >> /etc/rc.d/rc.local
echo "modprobe ip_vs" >> /etc/rc.d/rc.local
echo "modprobe ip_vs_rr" >> /etc/rc.d/rc.local
echo "modprobe ip_vs_wrr" >> /etc/rc.d/rc.local
echo "modprobe ip_vs_sh" >> /etc/rc.d/rc.local
echo "modprobe ip_tables" >> /etc/rc.d/rc.local
echo "modprobe ip_set" >> /etc/rc.d/rc.local
echo "modprobe xt_set" >> /etc/rc.d/rc.local
echo "modprobe ipt_set" >> /etc/rc.d/rc.local
echo "modprobe ipt_rpfilter" >> /etc/rc.d/rc.local
echo "modprobe ipt_REJECT" >> /etc/rc.d/rc.local
echo "modprobe ipip" >> /etc/rc.d/rc.local
echo "modprobe overlay" >> /etc/rc.d/rc.local
chmod 777 /etc/rc.d/rc.local
9. 安装 Kubernetes
yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
设置开机启动Kubernetes
10. 关闭电脑
shutdown -h now
四、克隆虚拟机
找到克隆选项以后,一直下一步
选择完整克隆
点击完成,等待克隆完成
五、为两台虚拟机配置主机名和静态IP地址
1. 启动两台虚拟机
2. 更改主机名
在 Kubernetes0 上执行命令
echo "Matser" > /etc/hostname
在 Kubernetes1 上执行命令
echo "Node1" > /etc/hostname
3. 设置静态IP地址
在 Kubernetes0 上执行命令
nmcli connection delete ens160
nmcli connection add type ethernet con-name ens160 ifname ens160 ipv4.method manual ipv4.addresses 172.192.87.1/16 ipv4.gateway 172.192.0.1 ipv4.dns 8.8.8.8 ipv6.method disable
在 Kubernetes1 上执行命令
nmcli connection delete ens160
nmcli connection add type ethernet con-name ens160 ifname ens160 ipv4.method manual ipv4.addresses 172.192.87.2/16 ipv4.gateway 172.192.0.1 ipv4.dns 8.8.8.8 ipv6.method disable
重启两台虚拟机
reboot
六、部署Kubernetes
在 Master 主机上初始化 Kubernetes
kubeadm init --apiserver-advertise-address=172.192.87.1 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.23.6 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all
获得加入集群的命令
kubeadm token create --print-join-command
将上述代码在Master执行后,获得节点加入Master的命令。此命令在Node1上执行
我的获得代码是
kubeadm join 172.192.87.1:6443 --token vldu3t.jq0rr05ky7pw5alw --discovery-token-ca-cert-hash sha256:1b64c4ff362249f0626216a9b21e326f1a69b5b4cb7d57ad18a3518b1aa9f508
上述代码在Node1里执行就好了
七、解决K8S报错
此报错是环境变量的问题
admin.conf 只在 Master 里有
export KUBECONFIG=/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
八、解决 Node 节点 NotReady 问题
在Master上安装CNI即可解决该问题
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待镜像拉取完毕即可解决该问题
九、安装Dashboard
执行命令安装
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
修改配置文件
执行命令使配置文件生效
kubectl apply -f recommended.yaml
等待 pod 创建完成后,创建需要登陆 dashboard 的 token
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system
然后执行命令使配置文件生效
kubectl apply -f dashboard-adminuser.yaml
最后执行命令获得 token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
访问 https://172.192.87.1:30001 登录 kubernetes dashboard 面板