LinQ
发布于 2024-05-21 / 52 阅读 / 0 评论 / 0 点赞

Kubeadm部署k8s集群

基于 Kubeadm 部署 k8s 集群

环境准备

3台 ecs centos 7.9
安装版本,最新版k8s
参考:https://www.cnblogs.com/bmwhero/p/17911418.html

初始化

3台 服务器执行系统初始化脚本

#!/bin/bash

# 更新系统
sudo yum update -y

# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# 关闭SELinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# 关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

#   网络优化 
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system


# 设置Kubernetes的yum仓库
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF


# 设置docker的yum仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 移除以前安装的docker-ce
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 安装 containerd
sudo yum install -y containerd.io

sudo systemctl start containerd
sudo systemctl enable containerd
# 配置容器运行时 cgroup 驱动
sudo containerd config default | sudo tee /etc/containerd/config.toml

sed -i 's/SystemdCgroup = .*/SystemdCgroup = true/g' /etc/containerd/config.toml
sed -i 's/registry.k8s.io\/pause:3.6/registry.aliyuncs.com\/google_containers\/pause:3.9/g' /etc/containerd/config.toml

sudo systemctl restart containerd


# 安装kubelet、kubeadm和kubectl
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

# 启动kubelet服务
sudo systemctl enable --now kubelet


echo "初始化完成。现在可以在主节点上执行 'kubeadm init' 来初始化Kubernetes集群了。"

master节点初始化


kubeadm init \
--kubernetes-version v1.29.0 \
--apiserver-advertise-address=172.16.25.246 \  
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

拷贝kubeconfig

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

拷贝运行命令结尾时输出添加节点指令

kubeadm join 172.16.26.63:6443 --token 8dvw69.o5bz4qmr8g8aua58 \
	--discovery-token-ca-cert-hash sha256:7d63effe65f741b4ad3353327b0bd72689f9ce17925007f0b87fb99f8dc12bba

安装网络插件

下载:

wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

安装

kubectl apply -f kube-flannel.yml

加入work 和 master 节点

#用于生成token 和节点加入命令
kubeadm token create --print-join-command

kubeadm join 172.16.26.63:6443 --token 8dvw69.o5bz4qmr8g8aua58 \
	--discovery-token-ca-cert-hash sha256:7d63effe65f741b4ad3353327b0bd72689f9ce17925007f0b87fb99f8dc12bba

# master节点加入,和worker节点的加入类似,只是需要在命令中增加--control-plane参数,表示该节点是作为master加入的

安装 nginx-ingress (可选)


评论