k8s集群搭建保姆级教程

查看操作系统

cat /etc/os-release

[root@k8s-master ~]# cat /etc/os-release
NAME="Alibaba Cloud Linux"
VERSION="3 (OpenAnolis Edition)"
ID="alinux"
ID_LIKE="rhel fedora centos anolis"
VERSION_ID="3"
VARIANT="OpenAnolis Edition"
VARIANT_ID="openanolis"
ALINUX_MINOR_ID="2104"
ALINUX_UPDATE_ID="13.2"
PLATFORM_ID="platform:al8"
PRETTY_NAME="Alibaba Cloud Linux 3.2104 U13.2 (OpenAnolis Edition)"
ANSI_COLOR="0;31"
HOME_URL="https://www.aliyun.com/"

后面的所有操作都要根据实际的系统更换包管理器命令,比如我的是yum

正式开始集群搭建了

修改主机名

hostnamectl set-hostname k8s-master #根据节点修改主机名
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

重启后主机名就改变了

配置节点ip

# 把对应的ip-master,ip-node1, ip-node2换成对应的服务器内网ip
cat >> /etc/hosts <<EOF
ip-master k8s-master
ip-node1 k8s-node1
ip-node2 k8s-node2
EOF

然后再相互ping,如果都能通就说明配置正确

内核参数配置

modprobe overlay
modprobe br_netfilter

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sysctl --system

检查方式

sysctl net.bridge.bridge-nf-call-iptables net.ipv4.ip_forward
# 两个输出都等于1
lsmod | grep -E "overlay|br_netfilter"

安装配置containerd

wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install containerd.io
rpm -qa | grep containerd
systemctl enable --now containerd

查询版本

ctr version

然后需要给containerd配置镜像,可以参考https://xuanyuan.cloud/usage/containerd

安装kubelet-1.30.4 kubeadm-1.30.4 kubectl-1.30.4

cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm/
enabled=1
gpgcheck=0
EOF

yum clean all
yum makecache
yum install -y kubelet-1.30.4 kubeadm-1.30.4 kubectl-1.30.4
systemctl enable kubelet

检查版本

kubeadm version
kubectl version --client

现在每个节点的基本配置就结束了,开始集群的搭建

kubeadm init 初始化控制平面(master 执行)

kubeadm init \
--apiserver-advertise-address=master-ip[这里需要改成对应的master-内网ip] \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.30.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# 执行日志最后会出现一条类似
kubeadm join 172.19.239.95:6443 --token hs3zba.vg4j5773z0zdxhck         --discovery-token-ca-cert-hash sha256:5e4f55dcbde7e63a8b5f6fbdbd55e5970c241a1dc195289fe884d0dcde7beb5c 
把这条语句复制到每个node节点执行就可以将node节点加入集群了

然后查看集群情况

kubectl get nodes
# 当前master状态为 NotReady,正常,缺少CNI网络插件
kubectl get pods -n kube-system
# etcd、kube-apiserver、controller-manager、scheduler 全部Running;coredns处于Pending

安装配置Flannel CNI 插件

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

检查插件情况

kubectl get pods -n kube-flannel

正常情况status都会是Running
到此为止,k8s一个简单的集群就搭建完成了

测试集群

# 1. 创建 Deployment
kubectl create deployment nginx-test --image=nginx

# 2. 暴露为 NodePort 类型的 Service
kubectl expose deployment nginx-test --type=NodePort --port=80

# 3. 查看分配的 NodePort 端口
kubectl get svc nginx-test

# 访问url
http://<ip>:<端口>

该教程每个步骤都写得比较简洁,如果不了解的部分可以在评论区写出来,我会优化教程

更多推荐