k8s集群搭建保姆级教程
·
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>:<端口>
该教程每个步骤都写得比较简洁,如果不了解的部分可以在评论区写出来,我会优化教程
更多推荐
所有评论(0)