k8s-CentOs7.x 搭建集群(1)(kubelet 1.19.2)

## 前言

公司准备将所有应用迁移.NetCore,并部署于k8s。借此契机来记录下k8s的学习过程。

一、创建三台CentOs7.x虚拟机

192.168.124.201

192.168.124.202

192.168.124.203

二、配置Hosts与静态ip映射

vim /etc/hosts

192.168.124.201 k8s-master

192.168.124.202 k8s-node1

192.168.124.203 k8s-node2

三、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

四、关闭SELinux

sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0

五、配置内核参数,将桥接的IPv4流量传递倒iptables的链

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

#让上述命令生效
sysctl --system

六、关闭swap分区=>K8S中不支持swap分区

vim /etc/fstab

#注释下面语句
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

#执行以下命令
echo vm.swappiness=0 >> /etc/sysctl.conf
sudo reboot
#验证Swap行均为o

free -m

7、安装docker

配置yum 的阿里云包源

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

查看所有docker版本

yum list docker-ce --showduplicates | sort -r

image-20201011140957397

本次选择docker版本 docker-ce-18.06.3

sudo yum install docker-ce-18.06.3.ce

配置开机启动docker

systemctl start docker 
systemctl enable  docker

8、安装Kubeadm、kubelet、kubectl

配置阿里云Yum软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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

Kubeadm、kubelet、kubectl 三者的版本需要统一

查看kubelet版本

yum list kubelet --showduplicates | sort -r

image-20201011145323209

选择 kubelet 版本1.19.2,执行下面命令,安装指定版本的kubelet、kubeadm、kubectl安装

yum install -y kubelet-1.19.2-0.x86_64 --nogpgcheck kubeadm-1.19.2-0.x86_64 --nogpgcheck
kubectl-1.19.2-0.x86_64 --nogpgcheck kubernetes-cni-0.8.7 –disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet

下面 9-10的步骤只需要在Master节点执行-------------------------------------------------------------------------------------------------

9、初始化Kubernetes Master

--apiserver-advertise-address 为Master的IP

kubeadm init \
--apiserver-advertise-address=192.168.124.201 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.19.2 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

此过程利用kubeadm帮我们去安装k8s需要的镜像以及相关插件。

初始化成功会有如下提示:

image-20201011150648338

标红的为node节点加入集群命令,忘了也可以重新生成。下面再介绍相关命令。

初始化成功后,为顺利使用kubectl,执行以下命令:

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

执行kubectl get nodes,查看master节点状态:

image-20201011150914015

master 状态为NotReady

通过如下命令查看kubelet状态:

journalctl -xef -u kubelet -n 20

image-20201011151332555

提示未安装cni 网络插件。

10、安装flannel网络插件(CNI)

该镜像在国外,有可能出现ImagePullError等错误,下面提供几种方法解决:

首先先查看该flannel的yml文件引用了那些镜像,把yml下载下来:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

查看flannel镜像版本

cat kube-flannel.yml |grep image|uniq

1602504419(1)

可以看到镜像版本为image: quay.io/coreos/flannel:v0.13.0-rc2,该镜像非常新,如果该镜像全网都没有,那么就按照下面方法①解决,如果存在,就按照方法②执行。

解决方法:

①如果你自己有阿里云、腾讯云等服务器,那么直接在自己的服务器上拉取该镜像,下载下来,再在你的虚拟机还原该镜像。

先拉取镜像:

docker pull image: quay.io/coreos/flannel:v0.13.0-rc2

将镜像保存为flannel.tar包:

docker save -o flannel.tar quay.io/coreos/flannel:v0.13.0-rc2

通过FTP将flannel.tar传输到本地的虚拟机

通过下面命令加载镜像:

docker load -i flannel.tar

查看本地镜像,红色框所示,所需镜像已加载成功:

image-20201012202231466

执行以下命令安装flannel即可:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

②修改该yml文件,将镜像版本修改为已有的版本,可在https://github.com/coreos/flannel/releases上查看flannel相关镜像包。

将flannel:v0.12.0-amd64.docker 下载到本地:

image-20201012203320418

修改yml文件镜像源:

sed -i 's/flannel:v0.13.0-rc2/flannel:v0.12.0-amd64/' kube-flannel.yml 

参考①中,传输镜像到虚拟机装载

同样,执行以下命令安装flannel即可:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

输入命令kubectl get pods -n kube-system,等待所有插件为running状态

pod插件

待所有pod status为Running的时候,再次执行kubectl get nodes:

image-20201011225443861

如上图所示,master状态变为,表明Master节点部署成功!

11、部署k8s-node1、k8s-node2集群

1、在k8s-node1、k8s-node2等两台虚拟机中重复执行上面1-8的步骤,安装好docker、kubelet、kubectl、kubeadm。

2、node节点加入集群

在上面第九步初始化master节点成功后,输出了下面的kubeadm join命令:

image-20201011150648338

该命令就是node加入集群的命令,分别在k8s-node1、k8s-node2上执行该命令加入集群。

image-20201012210045225

如果忘记该命令,可以通过以下命令重新生成:

kubeadm token create --print-join-command

3、在master节点执行下面命令查看集群状态:

kubectl get nodes

image-20201012211308952

如上图所示,所有节点都为ready,集群搭建成功。

posted @ 2020-10-12 21:24  罗智炼  阅读(1328)  评论(1编辑  收藏  举报