集群环境配置
从节点加入集群的环境步骤配置跟master类似,但是可以不需要部署网络插件 flannel
参考文章:https://www.php20.cn/article/387
准备工作:
一台ubuntu服务器(虚拟机)
k8s环境配置
host配置
我们先给服务器定义好hosts,便于直接找到该服务器ip
192.168.192.10 node-1
注意,后面如果需要增加集群,也需要配置其他的hosts
主机名修改(非必要)
修改 /etc/hostname 改为 node-1
关闭防火墙
由于k8s的防火墙规则和系统的冲突,所以需要关闭系统的防火墙
sudo ufw disable systemctl stop ufw
关闭selinux
关闭selinux以允许容器访问宿主机的文件系统 (新装的Ubuntu好像没这个东西,可以自行百度)
禁用swap
swap会在内存不足的时候使用磁盘当做内存,但是效率会非常低,导致服务器直接卡死
sudo swapoff -a vi /etc/fstab # 将swap一行前面增加个# 号注释掉
网络参数
vi /etc/sysctl.d/k8s.conf #将下面的3行(去掉#号写入到此文件) #net.bridge.bridge-nf-call-ip6tables = 1 #net.bridge.bridge-nf-call-iptables = 1 #net.ipv4.ip_forward = 1 modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf
安装docker
apt-get install docker.io -y # 设置开机启动并启动docker sudo systemctl start docker sudo systemctl enable docker # 修改docker运行时,并且增加镜像 cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": \["native.cgroupdriver=systemd"\], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "registry-mirrors": \[ "https://reg-mirror.qiniu.com/" \], "storage-driver": "overlay2" } EOF
配置ubuntu k8s 安装源
#使得 apt 支持 ssl 传输 apt-get update && apt-get install -y apt-transport-https #下载 gpg 密钥 curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - #添加 k8s 镜像源 cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF #更新 apt-get update
安装 kubeadm、kubelet、kubectl
注意!这里最好是只安装 1.24之前的版本,新版本可能安装很多问题,导致无心学习,我这里选择的是1.23.10
apt list--all-versions package_name ##查看版本 apt-get install -y kubeadm=1.23.10-00 kubelet=1.23.10-00 kubectl=1.23.10-00 # 阻止自动更新(apt upgrade时忽略)。所以更新的时候先unhold,更新完再hold。 apt-mark hold kubelet kubeadm kubectl
加入集群
在第一篇文章中,我们保存了一个 join命令,用于加入集群
kubeadm join 192.168.192.9:6443 --token mdutmg.pbecp9mqcowc4b0u \ --discovery-token-ca-cert-hash sha256:61f8d9b13b94a3c7eff88e25faf1c873cfd559d1ee2f2988009ac85de11ec730
如果没有记住token,可以根据以下命令去master节点获取:
root@master:/home/tioncico# kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS mdutmg.pbecp9mqcowc4b0u 4h 2022-09-08T08:12:00Z authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token root@master:/home/tioncico#
cert-hash sha256的值可以通过openssl获取:
root@master:/home/tioncico# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 61f8d9b13b94a3c7eff88e25faf1c873cfd559d1ee2f2988009ac85de11ec730 root@master:/home/tioncico#
运行join命令之后:
通过 kubectl get nodes 可查看当前集群节点(需要在master节点中执行)
root@master:/home/tioncico# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready control-plane,master 19h v1.23.10 node-1 Ready <none> 2m27s v1.23.10 root@master:/home/tioncico#
此时,已经增加了一个集群节点,可以通过此文章继续增加
访问nginx
不管是哪个节点,都可以根据节点ip+端口方式访问: