使用kubeadm 部署 k8s 1.25版本

一、环境要求

资源:至少2c2g10gb 的资源

hosts

192.16.30.100 k8s-master
192.16.30.101 k8s-node01
192.16.30.102 k8s-node2

系统及内核版本

[root@k8s-master ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-master ~]# uname -r
3.10.0-1160.el7.x86_64 

二、基础环境配置(所有节点执行)

1、配置hostname并添加hosts

hostnamectl  set-hostname   k8s-master    (master)

hostnamectl  set-hostname   k8s-node01   (node01)

hostnamectl  set-hostname   k8s-node02   (node02)

在所有节点添加

cat << EOF >> /etc/hosts
192.16.30.100  k8s-master
192.16.30.101  k8s-node01
192.16.30.102  k8s-node02
EOF

2、配置时钟

yum install ntpdate  -y

ntpdate   ntp1.aliyun.com

保持所有主机时钟一致

3、关闭防火墙和selinux  

# 关闭防火墙
systemctl stop     firewalld 
systemctl disable firewalld
systemctl stop     iptables
systemctl disable iptables
# 关闭selinux
setenforce 0 
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config

4、禁用交换分区

为了保证 kubelet 正常工作,你必须禁用交换分区。

swapoff  -a
sed -i 's/.*swap.*/#&/' /etc/fstab

三、配置 repo 安装 containerd、kubelet、kubeadm、kubectl

配置docker-ce源 安装 containerd 
1.安装必要的一些系统工具 
 yum install -y yum-utils device-mapper-persistent-data lvm2 Step 

2.添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

3.配置kubernetes源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 epo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg EOF

 

 

四、安装及配置(所有节点执行)

1、部署 containerd

Kubernates 中 pod 的运行必须有容器运行环境,以前 kubernetes 是使用 Docker,后面主要使用 containerd 等,只安装 containerd 即可

移除可能安装过的 Docker 包

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

安装 yum-utils

yum install -y yum-utils

安装 containerd

yum install containerd.io -y

配置 containerd

设置开机自启

systemctl enable containerd

systemctl start containerd

修改 containerd 使用 systemd  

containerd config default  > /etc/containerd/config.toml 
sed -i 's#k8s.gcr.io#registry.aliyuncs.com/google_containers#g'  /etc/containerd/config.toml 
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g'  /etc/containerd/config.toml
修改sandbox_image的值
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"

重启 containerd

systemctl daemon-reload   

systemctl enable --now containerd

systemctl restart containerd

五、部署 kubernetes组件  

kubelet、kubeadm、kubectl 

查看可用的版本,以kubelet为例

yum  list  kubelet  --showduplicates 

安装并配置自启动,这里安装1.25.4-0

yum  install  -y  kubelet-1.25.4-0    kubeadm-1.25.4-0   kubectl-1.25.4-0   --nogpgcheck (这个参数要加,否则会安装失败)

systemctl enable kubelet

六、配置 kubernetes

确认iptables 参数 为1 :
# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
# cat /proc/sys/net/bridge/bridge-nf-call-iptables

通用配置项

cat << EOF  |  sudo tee /etc/modules-load.d/k8s.conf 
overlay
br_netfilter
EOF

modprobe overlay

modprobe br_netfilter

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  --system   使以上配置生效  

七、安装和设置crictl

# VERSION="v1.23.0"

# curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz

# crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock

八、初始化集群

初始化master (只在master节点执行)

kubeadm init \
--image-repository=registry.aliyuncs.com/google_containers  \  
--pod-network-cidr=192.17.0.0/16  \ 
--service-cidr=192.18.0.0/16  \ 
--ignore-preflight-errors=all

 

等待片刻,没有报错说明部署成功了。 

九、配置网络插件 calico

  1、安装插件:

    # kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

    操作完成后稍等一会儿就会自动处于Ready状态。

    

     

  2、如果一直没有变为Ready状态,切查看message 日志一直在报错:cni plugin not initialized

     

     解决办法如下,具体参考:https://github.com/flannel-io/flannel/issues/1236

cat <<EOL > /etc/cni/net.d/10-flannel.conflist { "name": "cbr0", "cniVersion": "0.3.1", "plugins": [ { "type": "flannel", "delegate": { "hairpinMode": true, "isDefaultGateway": true } }, { "type": "portmap", "capabilities": { "portMappings": true } } ] } EOL #查看 cat /etc/cni/net.d/10-flannel.conflist ifconfig cni0
posted @ 2023-05-09 17:04  羊脂玉净瓶  阅读(55)  评论(0)    收藏  举报