centos安装kubernetes

本章程安装k8s 1.30版本为例。

1、环境配置

k8s 自1.24版本起,移除了dockershim了,1.30使用了containerd运行部署,containerd部署文档参考centos安装containerd-CSDN博客

k8s部署环境可参考容器运行时 | Kubernetes

1.1、修改主机名称

#!/bin/sh
hostnamectl set-hostname master
hostnamectl status

1.2、禁止交换分区

#!/bin/sh
 
sudo swapoff -a
 
# 在 /etc/fstab 中注释掉 swap 配置
sed -ri 's/.*swap.*/#&/' /etc/fstab

1.3、禁用防火墙

#!/bin/sh
 
systemctl stop ufw
systemctl disable ufw

1.4、转发IPV4

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
#!/bin/sh
 
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

1.5、安装ipvs管理工具

#!/bin/sh
 
apt install ipvsadm

2、安装kubectl+kubelet+kubeadm

        参考k8s官网说明文档

      安装脚本

#1、更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:
sudo apt-get update
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

#2、下载用于 Kubernetes 软件包仓库的公共签名密钥。所有仓库都使用相同的签名密钥,因此你可以忽略URL中的版本:
# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg



#3、添加 Kubernetes apt 仓库。 请注意,此仓库仅包含适用于 Kubernetes 1.30 的软件包
# 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

#4、更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:
sudo apt-get update
sudo apt-get install -y kubelet='1.30.3-1.1' kubeadm='1.30.3-1.1' kubectl='1.30.3-1.1'
sudo apt-mark hold kubelet kubeadm kubectl

3、版本修改

#解除版本

apt-mark unhold kubelet kubeadm kubectl

#安装新版本

apt-get update

apt-get install -y kubelet='1.29.6-1.1' kubeadm='1.29.6-1.1' kubectl='1.29.6-1.1'

#锁定版本

apt-mark hold kubelet kubeadm kubectl

4、集群初始化

        使用kubeadm init 命令进行初始化集群

#/bin/sh
kubeadm init --config kubeadm-init.yaml

        其中kubeadm-init.yaml为集群参数配置文件

        配置文件可先使用默认命令导出来后,再根据项目需要调整,再通过初始化命令进行初始化集群。

#/bin/sh
 #导出默认模版
kubeadm config print init-defaults > kubeadm-init-defaults.yaml

修改的yaml文件为

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 1.2.3.4 #填写本机IP
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  name: node
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  #registry.k8s.io
kind: ClusterConfiguration
kubernetesVersion: 1.30.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
scheduler: {}

---
kind: KubeProxyConfiguration
apiVersion: kubeproxy.config.k8s.io/v1alpha1
mode: ipvs
iptables:
  masqueradeAll: false

---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
#证 书 轮 训
rotateCertificates: true
#单 节 点 最 大 pod数 ( 默 认 110)
maxPods: 220
#驱 逐 pod阈 值
evictionHard:
  memory.available: "500Mi"
  nodefs.available: "1Gi"
  imagefs.available: "1Gi"
evictionMinimumReclaim:
  memory.available: "0Mi"
  nodefs.available: "500Mi"

安装成功打印日志

将k8s配置文年复制到当前用户的 home 目录中

#/bin/sh
 
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
 
export KUBECONFIG=/etc/kubernetes/admin.conf

5、安装flannel网络插件

        注意flannel与k8s初始化脚本的网段要相同

# 下载Flannel的YAML配置文件
wget https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
 
# 修改Flannel的YAML配置文件中的网络前缀,以匹配你的网络环境
# 例如,如果你的Pod网络是10.244.0.0/16,则需要将flannel的网络前缀设置为这个值
# 注意:这一步通常是可选的,因为Flannel可以自动检测网络前缀。
 
# 应用Flannel的配置文件
kubectl apply -f kube-flannel.yml
 
# 确保Flannel的Pod正在运行
kubectl get pods -n kube-system

6、检查集群是否启动成功

#重启containerd
systemctl restart containerd

#获取集群信息
 kubectl get pods -A -o wide

7、集群初始化失败回退操作

可以进行reset清除文件,可参考官网

#!/bin/sh
 
kubeadm reset
 
rm -rf /etc/cni
rm -rf /etc/kubernetes
rm -rf /run/secrets/kubernetes.io
rm -rf /run/calico
rm -rf /var/lib/etcd
rm -rf /var/lib/cni
rm -rf /var/lib/kubelet
rm -rf /var/log/containers
rm -rf /var/log/pods
rm -rf /var/run/calico
rm -rf $HOME/.kube
 
ipvsadm --clear

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值