kubernetes1.20搭建——详细版(centos7)

2020年发布的kubernetes1.20是第三个版本!这个版本包含了42个增强:11个增强已经稳定,15个增强进入beta, 16个增强进入alpha。

重大变化

官方声明1.20版本将弃用docker

但是1.20版本仍然兼容docker,可以使用docker命令,kuberbetes官方发表博客,会在后续版本中取消docker,但是如今大部分容器仍然使用docker。

官方博客给出的原因:我们在这里谈论的是两种不同的环境,这造成了混乱。在您的Kubernetes集群内部,有一个称为容器运行时的东西,它负责拉出和运行容器映像。Docker是该运行时的流行选择(其他常见选项包括容器和CRI-O),但是Docker并非旨在嵌入Kubernetes中,这会引起问题。

您会看到,我们所谓的“ Docker”实际上不是一件事,它是整个技术堆栈,其中一部分是所谓的“ containerd”,它本身就是一个高级容器运行时。Docker很酷且有用,因为它具有许多UX增强功能,使我们在进行开发工作时真的很容易与人进行交互,但是对于kubernetes而言,这些UX增强不是必需的,因为它不是人。

官方博客建议:不建议使用TL; DR Docker作为基础运行时,而应使用使用 为Kubernetes创建的Container Runtime Interface(CRI)的运行时。Docker生成的映像将一如既往地在所有运行时中继续在您的集群中运行。

如果您是Kubernetes的最终用户,则不会为您带来很多改变。这并不意味着Docker的消亡,也不意味着您不能或不应该再将Docker用作开发工具。Docker仍然是用于构建容器的有用工具,并且运行产生的映像docker build仍可以在您的Kubernetes集群中运行。

如果您使用的是托管的Kubernetes服务,例如GKE,EKS或AKS(默认为containerd),则需要确保您的工作节点正在使用受支持的容器运行时,然后才能在将来的Kubernetes版本中删除Docker支持。如果您具有节点自定义项,则可能需要根据您的环境和运行时要求对其进行更新。请与您的服务提供商合作,以确保正确的升级测试和计划。

如果要滚动自己的集群,则还需要进行更改以避免集群中断。在v1.20,您将收到Docker的弃用警告。在将来的Kubernetes版本(目前计划在2021年下半年为1.22版本)中删除Docker运行时支持时,它将不再受支持,并且您将需要切换到其他兼容的容器运行时之一,例如containerd或CRI-O 。只要确保您选择的运行时支持您当前使用的docker守护程序配置即可(例如,日志记录)。

Dockershim弃用

Dockershim,用于Docker的容器运行时接口(CRI)垫片正在被弃用。对Docker的支持已被否决,并将在未来的版本中删除。

官方博客给出:在v1.23发行版中从Kubelet中删除了Dockershim,从而删除了对Docker作为容器运行时的支持。

参考官方博客:https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/

下面我们实战安装一下kubernetes1.20

 

  • 本次安装主要是用来学习kubernetes1.20安装的相关过程及组件的配置,若用于企业实践可根据具体需要在节点添加相应的组件
  • 前面文章给出了如何在物理机上安装centos操作系统(小白可直接按照文章内容直接完成安装,需要改的参数会具体指出)
  • 如果是新安装的操作系统,可以安装下列组件,方便操作(其它可跳过第一阶段,直接看准备工作)——具体参考使用二进制安装包部署kubernetes(详细精讲版)中安装工具部分
  • 放在bash输入框中的都是命令,可复制直接使用
  • 虚拟机上安装可准备2-3台centos系统的虚拟机,一台master,两台node
  • 本文使用一台虚拟机,即是master也是node
  • 本文使用的系统是centos7,需要两核CPU以上,内存2G以上,硬盘20G以上,在物理机虚拟机安装皆可

规划

总体规划
主机名 IP地址 角色
kube-master 虚拟机/电脑IP master
kube-node1 虚拟机/电脑IP node1
kube-node2 虚拟机/电脑IP node2

本文master和node1 为一台机器

组件说明
角色 组件
master docker、kubelet、kubeadm、kubectl
node1 docker、kubelet、kubeadm、kubectl
node2 docker、kubelet、kubeadm、kubectl

准备工作(3台都需要)

本文设置的IP为192.168.10.108,做相关操作请修改IP为自己的IP地址

设置主机名(本文用的是root用户,非root用户可加入sudo命令)

hostnamectl set-hostname master
hostnamectl set-hostname node1

修改 /etc/hostname 文件,添加主机名和 IP 的对应关系:(有node2,将node2也加入即可)

vim /etc/hosts
192.168.10.108 master
192.168.10.108 node1

在每台机器上关闭防火墙,关闭服务,并设为开机不自启

sudo systemctl stop firewalld && sudo systemctl disable firewalld

清空防火墙规则

sudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t nat
sudo iptables -P FORWARD ACCEPT

1、如果开启了 swap 分区,kubelet 会启动失败(可以通过将参数 --fail-swap-on 设置为false 来忽略 swap on),故需要在每台机器上关闭 swap 分区:

sudo swapoff -a

2、为了防止开机自动挂载 swap 分区,可以注释 /etc/fstab 中相应的条目:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

1、关闭 SELinux,否则后续 K8S 挂载目录时可能报错 Permission denied :

sudo setenforce 0

2、修改配置文件,永久生效;

grep SELINUX /etc/selinux/config
SELINUX=disabled

这一步也可以vi /etc/selinux/config(修改SELINUX=disabled)

时间同步

yum install ntpdate -y && ntpdate time.windows.com

配置内核参数

cat > /etc/sysctl.d/k8s.conf <

安装docker(3台机运行)

官方文档https://docs.docker.com/engine/install/centos/

移除电脑上原有的dockers

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

注:如果报没有文件,说明原来没有dockers,直接进行下面的即可

安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 kubernetes1.20搭建——详细版(centos7)_第1张图片

添加软件源信息

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

更新并安装Docker-CE

sudo yum makecache fast

kubernetes1.20搭建——详细版(centos7)_第2张图片

开始docker安装 

sudo yum -y install docker-ce

启动Docker

sudo systemctl start docker && sudo systemctl enable docker

查看dockers状态

$ sudo systemctl status docker

kubernetes1.20搭建——详细版(centos7)_第3张图片

说明docker在正常运行,如果出现问题,输入journalctl -xe或者查看系统日志(vim /var/log/message)查看原因

可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://s2q9fn53.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload && sudo systemctl restart docker

这里的仓库地址可自行在阿里云上申请(可参考阿里云用户镜像加速地址在哪里

安装kubelet、kubeadm、kubectl(3台机运行)

添加kubernetes阿里yum源

cat < /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
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

开始安装

yum install kubectl kubelet kubeadm && systemctl enable kubelet && systemctl start kubelet

kubernetes1.20搭建——详细版(centos7)_第4张图片

部署Master

初始化k8s集群

kubeadm init --kubernetes-version=1.20.0  \
--apiserver-advertise-address=192.168.10.108   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

这里的192.168.10.108改为自己的IP地址

中间需要等待1-2min,根据网络速度等待即可

kubernetes1.20搭建——详细版(centos7)_第5张图片

出现successfully表示初始化完成

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

按照提示执行上述命令

如果是root用户可直接执行

export KUBECONFIG=/etc/kubernetes/admin.conf

根据提示可将node节点加入master(可直接从控制台输出信息里面复制)

kubeadm join 192.168.10.108:6443 --token ...

查看node节点显示当前node状态均为noReady是正常的,配置网络后,就转为ready了

 kubectl get node

部署CNI网络插件

安装flannel网络插件

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

将master节点的admin.conf发送到到所有node节点

scp /etc/kubernetes/admin.conf root@node1:/etc/kubernetes/admin.conf
scp /etc/kubernetes/admin.conf root@node2:/etc/kubernetes/admin.conf
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile

 执行完成以后可以在任意node节点上管理集群,查看节点是否正常

kubectl get nodes

mater和node显示为ready

恭喜你完成了kubernetes1.20搭建任务

根据教程,在环境不出问题的情况下可以在20分钟以内完成搭建任务

kubectl get nodes出现Unable to connect to the server: x509可查看搭建kubernetes1.20报错解决:Unable to connect to the server: x509解决!

出现其它相关问题可参考(centos7.6使用kubeadm安装kubernetes的master worker节点笔记及遇到的坑)

本文参考:kubernetes1.20搭建 快速 简单

你可能感兴趣的:(centos,k8s,kubernetes,linux)