kubeadm安装kubernetes v1.24.1

实验环境

两台机器,vms71和vms72
系统:centos7.4
vms71为master,vms72是worker

1.所有节点的基本设置

所有节点设置好/etc/hosts,使它们之间能互相解析。

[root@vms7X ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.26.71 vms71.rhce.cc vms71
192.168.26.72 vms72.rhce.cc vms72
[root@vms7X ~]# 

在所有节点上关闭swap分区。

[root@vms7X ~]# swapoff -a ; sed -i '/fstab/d' /etc/fstab 
[root@vms71 ~]# 

在所有节点上更新yum源。

[root@vms7X ~]#  rm -rf /etc/yum.repos.d/*  ; wget ftp://ftp.rhce.cc/k8s/* -P /etc/yum.repos.d/
[root@vms7X ~]# yum clean all
[root@vms7X ~]# 

2.安装containerd

在所有机器上安装containerd

[root@vms7X ~]#  yum install  containerd.io cri-tools  -y

[root@vms7X ~]#  crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock

现在vms71上修改配置文件,然后同步到vms72上即可。
先生成配置文件/etc/containerd/config.toml。

[root@vms71 ~]# containerd config default > /etc/containerd/config.toml

使用vim编辑器打开/etc/containerd/config.toml。

第一:搜索mirrors,把

     [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
改成
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://frz7i079.mirror.aliyuncs.com"]

第二:搜索sandbox,把

sandbox_image = "k8s.gcr.io/pause:3.6"
改为
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"

第三:搜索SystemdCgroup,把

          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            BinaryName = ""
            CriuImagePath = ""
            CriuPath = ""
            CriuWorkPath = ""
            IoGid = 0
            IoUid = 0
            NoNewKeyring = false
            NoPivotRoot = false
            Root = ""
            ShimCgroup = ""
            SystemdCgroup = false

改成

          [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
            SystemdCgroup = true

保存退出。

同步到vms72

[root@vms71 ~]# scp /etc/containerd/config.toml vms72:/etc/containerd/
root@vms72's password: 
config.toml            100% 7155     9.3MB/s   00:00    
[root@vms71 ~]#

所有节点重启containerd服务,并设置开机自动启动。
[root@vms7X ~]# systemctl enable containerd ; systemctl restart containerd

3.安装containerd客户端工具nerdctl

到下面的连接下载最新版的nerdctl,本实验时最新版是0.20.0版本的。
https://github.com/containerd/nerdctl/releases
先在vms71上下载,然后同步到vms72即可。

[root@vms71 ~]# tar zxf nerdctl-0.20.0-linux-amd64.tar.gz -C /usr/bin/ nerdctl
[root@vms71 ~]# scp /usr/bin/nerdctl vms72:/usr/bin/
root@vms72's password: 
nerdctl         100%   25MB  88.5MB/s   00:00    
[root@vms71 ~]#

到下面的地址下载nerdctl所需要的cni插件
https://github.com/containernetworking/plugins/releases

先在vms71上做,然后同步到vms72即可。

[root@vms71 ~]# mkdir -p /opt/cni/bin/
[root@vms71 ~]# tar zxf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin/
[root@vms71 ~]# scp -r /opt/cni/ vms72:/opt/

修改/etc/profile,在第二行添加如下两行内容

[root@vms71 ~]# head -3 /etc/profile
# /etc/profile
source <(nerdctl completion bash)
export CONTAINERD_NAMESPACE=k8s.io
[root@vms71 ~]# 

让设置生效

[root@vms71 ~]# source /etc/profile
[root@vms71 ~]# 

4.加载模块及修改参数

在所有节点上加载模块

[root@vms7X ~]# modprobe overlay ; modprobe br_netfilter

在所有机器上执行下面的命令,目的是系统重启时模块能自动加载。

cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

在所有机器上执行下面的命令,目的是实现重启系统后,参数也能继续生效。

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

让上述参数立即生效。

[root@vms7X ~]# sysctl -p /etc/sysctl.d/k8s.conf
[root@vms7X ~]#

5.安装kubernetes

查看当前源里有哪些版本

[root@vms71 ~]#yum list --showduplicates kubeadm --disableexcludes=kubernetes

在本试验时最新的版本是v1.24.1,所以本次就安装v1.24.1版本的。
所有节点上安装软件包

[root@vms7X ~]#yum install -y kubelet-1.24.1-0 kubeadm-1.24.1-0 kubectl-1.24.1-0  --disableexcludes=kubernetes
[root@vms7X ~]#

所有节点上启动kubelet并设置开机自动启动。

[root@vms7X ~]# systemctl enable kubelet --now
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@vms7X ~]#

此时kubelet状态是activating的,不是active的。

[root@vms71 ~]# systemctl is-active kubelet
activating
[root@vms71 ~]# 

在master(vms71)上初始化集群

[root@vms71 ~]# kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.24.1 --pod-network-cidr=10.244.0.0/16

file
等待一会之后,在vms71上执行提示的命令。

[root@vms71 ~]# mkdir -p $HOME/.kube 
[root@vms71 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
[root@vms71 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config 
[root@vms71 ~]# 

在vms72上加入集群

[root@vms72 ~]# kubeadm join 192.168.26.71:6443 --token a4i68r.sw86o5al1hu9qad0 --discovery-token-ca-cert-hash sha256:387d94aae85fd1a39c538183085c7f7c532fe07cf1e8d242ad2c2b70d43b7270

这条命令在master上执行kubeadm init执行成功时有提示。
在vms71上查看节点状态。

[root@vms71 ~]# kubectl get nodes
NAME            STATUS     ROLES           AGE   VERSION
vms71.rhce.cc   NotReady   control-plane      10m   v1.24.1
vms72.rhce.cc   NotReady   <none>          7s    v1.24.1
[root@vms71 ~]#

6.安装calico

到下面链接下载最新版的calico.yaml。

[root@vms71 ~]# wget https://docs.projectcalico.org/manifests/calico.yaml

修改calico.yaml找到CALICO_IPV4POOL_CIDR按下面修改。
file
改成
file
在mvs71(master)上安装calico,不需要在vms72上做什么。

[root@vms71 ~]# kubectl apply -f calico.yaml
[root@vms71 ~]# 

在vms71上再次查看节点状态。

[root@vms71 ~]# kubectl get nodes
NAME            STATUS   ROLES           AGE   VERSION
vms71.rhce.cc   Ready    control-plane   15h   v1.24.1
vms72.rhce.cc   Ready    <none>          15h   v1.24.1
[root@vms71 ~]#

7.安装metric server

[root@vms71 ~]# kubectl apply -f components.yaml
[root@vms71 ~]# 
[root@vms71 ~]# kubectl top nodes
NAME            CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
vms71.rhce.cc   380m         19%    2254Mi          58%       
vms72.rhce.cc   331m         16%    1613Mi          42%       
[root@vms71 ~]# 

相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读