kubeadm安装K8S,大陆网络
架构: 安装单台master做kubernetes控制平面,添加节点到控制平面
一个master节点,两个node节点
1.集群环境介绍
IP | 节点信息 |
10.2.83.181 | k8s-master |
10.2.83.183 | k8s-node1 |
10.2.83.182 | k8s-node2 |
2.系统优化
2.1 安装新内核
原内核信息:
#升级到新版,升级方式如下:
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.183-1.el7.elrepo.x86_64.rpm
wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.183-1.el7.elrepo.x86_64.rpm
yum -y install kernel-lt-5.4.183-1.el7.elrepo.x86_64.rpm
yum -y install kernel-lt-devel-5.4.183-1.el7.elrepo.x86_64.rpm
#调整默认内核启动
grub2-set-default "CentOS Linux (5.4.183-1.el7.elrepo.x86_64) 7 (Core)"
#检查是否修改正确并重启系统
grub2-editenv list
reboot
2.2 开启IPVS支持
创建/etc/sysconfig/modules/ipvs.modules文件,内容如下:
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}; do
/sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/modprobe ${kernel_module}
fi
done
最后,执行如下命令使配置生效:
chmod 755 /etc/sysconfig/modules/ipvs.modules
sh /etc/sysconfig/modules/ipvs.modules
lsmod | grep ip_vs
2.3 关闭防火墙和selinux和swap
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
接着,还需要关闭系统的交换分区,执行如下命令:
swapoff -a
cp /etc/fstab /etc/fstab.bak
cat /etc/fstab.bak | grep -v swap > /etc/fstab
然后,还需要修改iptables设置,在/etc/sysctl.conf中添加如下内容:
vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
最后,执行如下命令,以使设置生效:
sysctl -p
2.4 主机名本地解析配置
以上系统优化三个节点都需要执行。
3. 安装K8S
3.1 安装docker环境(三个节点操作)
# 卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#添加阿里云docker yum源,官方的虽然慢点但是还可以接受
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装必要依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
##默认安装最新版
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker
systemctl enable docker
#配置docker镜像使用阿里云加速器,需要注册阿里云账号,也可以用DaoCloud的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
EOF
PS:加速器配置
进入aliyun
搜索docker镜像加速器--注册后生成加速器信息在服务器进行配置

sudo systemctl daemon-reload
sudo systemctl restart docker
3.2 安装kubeadm,kubelet,kubectl
#添加阿里云kubernetes源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum -y install kubeadm kubectl kubelet
安装完之后需要设置开机自启否则可能会报错
systemctl daemon-reload && systemctl enable kubelet
3.3 初始化集群(master节点)
在没有开通FQ网络的执行命令:
kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=10.2.83.181 --image-repository registry.aliyuncs.com/google_containers --service-cidr=172.100.0.0/16 --pod-network-cidr=172.110.0.0/16 --ignore-preflight-errors=all
可能报错:
failed with error: Get “http://localhost:10248/healthz“
解决:修改/etc/docker/daemon.json 替换原来的docker加速器为native.cgroupdriver=systemd
[root@k8s-master ~]# vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
重启docker
systemctl restart docker
systemctl start kubelet
在确保kubelet状态为running的时候在初始化可以成功,安装成功会有successfully!
开通FQ网络:
kubeadm init --kubernetes-version=1.23.4 --apiserver-advertise-address=10.2.83.181 --service-cidr=172.100.0.0/16 --pod-network-cidr=172.110.0.0/16 --ignore-preflight-errors=all
初始化完成后确认:
查看pod所属的命名空间
kubectl get pod --all-namespaces
runnding的状态是正常的,但是此时可能有一些的pending的状态,原因是没有安装网络组件flannel,安装方法:
https://github.com/flannel-io/flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
安装完之后再查看状态发现都是running状态就是正常的
kubectl get pod --all-namespaces
3.4 其他节点需要安装
docker 、kubeadm,kubelet,kubect同master节点,docker需要启动,其他服务无需启动
3.5 其他节点加入集群
kubeadm token create --print-join-command //查看node节点join的命令
其他节点执行该命令后在master节点执行:
[root@k8s-master ~]# kubectl get nodes //查看状态为ready就是正常的
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 23h v1.23.4
k8s-node1 Ready <none> 114m v1.23.4
k8s-node2 Ready <none> 112m v1.23.4
此时就完成了K8S的初步部署。
K8S的相关命令:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get
https://www.cnblogs.com/testzcy/p/13025897.html
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现