Kubernetes(2)——集群部署

k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s。

k8s最初是在Google公司内部使用了10多年的技术,它的前身是叫做Borg(博格),直到2015年才被Google公司捐赠为开源项目。

如果之前我们有接触过OpenStack,那么应该知道管理VM虚拟机资源可以用OpenStack。那么管理容器所对应的开源平台是什么呢?k8s就是其中之一,在k8s之前也有很多容器管理平台,有docker自身的docker swarm,也有apache推出的Mesos等等。相比较而言,虽然k8s比其他推出的晚了些,但是丝毫不影响其火爆程度。

关于k8s更详细的介绍,可以移步至k8s中文文档或者k8s官方网站 ,以便查看更多资料

一、环境准备

172.25.254.2 集群master
172.25.254.3 集群slave
172.25.254.4 集群slave
172.25.254.6 habor仓库

上述四台虚拟机,均运行docker服务,如果是测试环境,那么master节点和habor仓库的虚拟机内存最少2G,CPU至少双核。

二、部署前准备

1、检查docker版本、关闭防火墙及Selinux、清空iptables规则、禁用Swap交换分区
注:以下操作需要在三台docker主机上分别配置一次,哪怕是在生产环境,都需要进行以下操作,因为k8s有它自己的安全策略。


[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld
#关闭Selinux
[root@master ~]# setenforce 0    
[root@master ~]# vim /etc/sysconfig/selinux 
SELINUX=disabled          #将此处改为disabled
[root@master ~]# iptables -F    #清空iptables规则
#重启docker服务
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
#禁用swap交换分区
[root@master ~]# swapoff -a   #临时禁用swap
[root@master ~]# vim /etc/fstab     #打开自动挂载的配置文件,将swap配置项注释掉
#/dev/mapper/cl-swap     swap                    swap    defaults        0 0
#就注释掉上面那行
[root@node02 ~]# mount -a    #重新加载挂载的配置文件
[root@node02 ~]# free -h     #确认输出的swap行如下(都为0):

(1)

所有节点部署docker引擎
# yum install -y docker-ce docker-ce-cli

# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

# sysctl --system

# systemctl enable docker
# systemctl start docker

Kubernetes(2)——集群部署_第1张图片
在这里插入图片描述
Kubernetes(2)——集群部署_第2张图片
(2)每个节点修改内核参数

vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

Kubernetes(2)——集群部署_第3张图片
在这里插入图片描述
Kubernetes(2)——集群部署_第4张图片
Kubernetes(2)——集群部署_第5张图片
在这里插入图片描述
(3)指定docker的启动方式为systemd,这是因为docker默认的启动方式为cgroup,而k8s的启动方式为systemd
Kubernetes(2)——集群部署_第6张图片
Kubernetes(2)——集群部署_第7张图片
Kubernetes(2)——集群部署_第8张图片
(4)每个节点禁用swap分区
Kubernetes(2)——集群部署_第9张图片
Kubernetes(2)——集群部署_第10张图片
Kubernetes(2)——集群部署_第11张图片
2.保证每台虚拟机都可以上网【打开iptables桥接功能及路由转发】。

三、配置k8s群集

1、部署下载k8s的yum源Kubernetes(2)——集群部署_第12张图片
(2)所有节点安装k8s的工具
Kubernetes(2)——集群部署_第13张图片
Kubernetes(2)——集群部署_第14张图片
Kubernetes(2)——集群部署_第15张图片
(3)启动并设置为开机自动开启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(4)查看默认配置信息

 kubeadm config print init-defaults	

Kubernetes(2)——集群部署_第16张图片

Kubernetes(2)——集群部署_第17张图片
默认从k8s.gcr.io上下载组件镜像,需要才可以,所以需要修改镜像仓库:
(5)列出所需的镜像
Kubernetes(2)——集群部署_第18张图片
(6)从阿里云上拉取所需的镜像

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

(7)将拉取到的镜像上传到私有仓库【方便集群的从节点可以快速拉取所需的镜像】
由于habor仓库开启了认证,故server2、server3、server4需要认证
在这里插入图片描述
注:我的habor仓库的客户认证在/etc/docker/certs.d/westos.org/ca.crt
添加解析——每个节点都要添加解析【第一次搭建,从节点无法拉取到镜像,就是这个错误导致的】
Kubernetes(2)——集群部署_第19张图片
将拉取到的镜像修改为私有仓库,并上传带私有仓库
Kubernetes(2)——集群部署_第20张图片

先登录habor仓库
docker login westos.org
登录成功后:在上传
docker push westos.org/library/etcd:3.4.3-0 ##以这个镜像为例

2、初始化k8s集群【在master上进行就可以了】

kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository westos.org/library
--pod-network-cidr=10.244.0.0/16	//使用flannel网络组件时必须添加
--kubernetes-version 	//指定k8s安装版本

Kubernetes(2)——集群部署_第21张图片
建立用户
Kubernetes(2)——集群部署_第22张图片
Kubernetes(2)——集群部署_第23张图片
Kubernetes(2)——集群部署_第24张图片
Kubernetes(2)——集群部署_第25张图片
3、从节点加入master的集群

kubeadm join --token b3a32e.7cef20447b55261e 172.25.0.11:6443 --discovery-token-ca-cert-hash sha256:bc718df41fdceb0db6c5380c7e27c204589b41dcb5f9a3bc52c254b707377f2f

Kubernetes(2)——集群部署_第26张图片
4.查看集群的节点
Kubernetes(2)——集群部署_第27张图片

在这里插入图片描述

5、安装flannel网络组件
注:下载这个二进制文件后,会在本地拉取到一个flannel镜像

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

6、其他的从节点会自动拉取所需的镜像
Kubernetes(2)——集群部署_第28张图片
注:

Master查看状态:
# kubectl get cs
# kubectl get node
# kubectl get pod -n kube-system


kubectl命令指南: https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
补充:

配置kubectl命令补齐功能
echo "source <(kubectl completion bash)" >> ~/.bashrc

Kubernetes(2)——集群部署_第29张图片
Kubernetes(2)——集群部署_第30张图片
到这里我们的k8s平台就拉建好了

四、当主节点的token失效了,怎么办

模拟实验:
当server4出现故障,并被集群踢出集群
Kubernetes(2)——集群部署_第31张图片
可以执行token list ,重新生成一个token
Kubernetes(2)——集群部署_第32张图片
再次连接
Kubernetes(2)——集群部署_第33张图片
再次查看集群状态
Kubernetes(2)——集群部署_第34张图片

你可能感兴趣的:(Kubernetes(2)——集群部署)