使用kubeadm搭建k8s(单master)(一)

212 阅读1分钟

环境准备:多台centos7服务器,其中一台为master

一、安装docker(所有机器,包括Master和Worker)

1、安装docker并启动(已安装直接进行下一步) (参考: Install Docker Engine on CentOS | Docker Documentation

$ sudo yum install -y yum-utils

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    \
    
$ sudo yum install docker-ce docker-ce-cli containerd.io

$ sudo systemctl start docker

2、设置docker cgrou_driver为systemd (参考:kubernetes.io/docs/setup/…

查看docker服务当前使用的Cgroup Driver:docker info

如果显示为cgroupfs则执行下面命令修改为systemd,显示为systemd则直接进行下一步。

$ sudo vim /etc/docker/daemon.json

编辑文件并保存,文件内容:

{    

"exec-opts":

    [ "native.cgroupdriver=systemd" ]

}

3、重新启动 Docker 并在启动时启用:

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker


二、安装kubeadm、kubelet 和 kubectl(所有机器,包括Master和Worker)

1、设置安装源(官方文档源国内无法获取改用aliyun,能够获取的小伙伴可以使用官方源)

(参考官方文档:kubernetes.io/docs/setup/…

vim /etc/yum.repos.d/kubernetes.repo

写入文件内容并保存:              

[kubernetes]
name=Kubernetes
#官方源
#baseurl=packages.cloud.google.com/yum/repos/k…
#aliyun
baseurl=mirrors.aliyun.com/kubernetes/…
enabled=1
gpgcheck=1
repo_gpgcheck=1
#官方源
#gpgkey=packages.cloud.google.com/yum/doc/yum… packages.cloud.google.com/yum/doc/rpm…
#aliyun
gpgkey=mirrors.aliyun.com/kubernetes/… mirrors.aliyun.com/kubernetes/…
#exclude=kubelet kubeadm kubectl 

2、关闭selinux

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

3、安装

sudo yum install -y kubelet kubeadm kubectl
sudo systemctl enable kubelet && systemctl start kubelet

三、部署 Kubernetes 的 Master 节点(Initializing your control-plane node,只Master节点执行)

(参考:kubernetes.io/docs/setup/…

1、kubeadm init

kubeadm init

如果看到提示信息显示官方源(k8s.gcr.io)无法连接,更换成阿里云的镜像源先拉取一下镜像

kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

看到coredns/coredns:1.8.4 这个镜像无法获取,手动拉取一下

docker pull coredns/coredns:1.8.4

然后重命名

docker tag coredns/coredns:1.8.4 registry.aliyuncs.com/google_containers/coredns:v1.8.4

再次执行init

kubeadm init --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.22.1

成功的话就会显示一条如下所示命令,记录输出的 kubeadm join 命令,你需要此命令将节点加入集群。

 “You can now join any number of machines by running the following on each node as root:

kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

tips:

如果init过程中报错,错误解决之后再次执行init之前先执行一下 kubeadm reset

2、设置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile source /etc/profile

3、查看master节点状态

kubectl get nodes

此时会看到STATUS为NotReady,执行下面命令查看该节点具体信息

kubectl describe node ${nodeName}

可以看到“container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized”,意思就是网络环境不可用,接下来安装网络插件

4、安装 Pod 网络附加组件(未完待续。。。)

(参考:kubernetes.io/zh/docs/con…www.cni.dev/plugins/cur…

四、部署 Kubernetes 的 Worker 节点(只Workers节点执行)

运行master节点成功执行 kubeadm init 之后输出的 kubeadm join ... 命令,若输入“This node has joined the cluster”则加入成功。