k8s学习|k8s集群环境的搭建

k8s集群环境的搭建

1 环境规划
1.1 集群类型
●Kubernetes集群大致分为两类:一主多从和多主多从。
●一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。
●多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。

集群搭建类型.png



为了测试方便,本次搭建的是一主多从类型的集群。


1.2 安装方式



●kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。

●① minikube:一个用于快速搭建单节点的kubernetes工具。
●② kubeadm:一个用于快速搭建kubernetes集群的工具。
●③ 二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效。

●我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择kubeadm方式。

1.3 主机规划

角色

IP地址

操作系统

配置

Master

192.168.18.100

CentOS7.8+,基础设施服务器

2核CPU,2G内存,50G硬盘

Node1

192.168.18.101

CentOS7.8+,基础设施服务器

2核CPU,2G内存,50G硬盘

Node2

192.168.18.102

CentOS7.8+,基础设施服务器

2核CPU,2G内存,50G硬盘


2 环境搭建

2.1 前言

●本次环境搭建需要三台CentOS服务器(一主二从),然后在每台服务器中分别安装Docker(18.06.3)、kubeadm(1.18.0)、kubectl(1.18.0)和kubelet(1.18.0)。

没有特殊说明,就是三台机器都需要执行。

2.2 环境初始化

2.2.1 检查操作系统的版本

●检查操作系统的版本(要求操作系统的版本至少在7.5以上):
 

环境初始化之检查操作系统版本.png



2.2.2 关闭防火墙和禁止防火墙开机启动

●关闭防火墙:


●禁止防火墙开机启动:
 

环境初始化之关闭防火墙和禁止防火墙开机启动.png



2.2.3 设置主机名

●设置主机名:


●设置192.168.18.100的主机名:


●设置192.168.18.101的主机名:


●设置192.168.18.102的主机名:


2.2.4 主机名解析

●为了方便后面集群节点间的直接调用,需要配置一下主机名解析,企业中推荐使用内部的DNS服务器。


2.2.5 时间同步

●kubernetes要求集群中的节点时间必须精确一致,所以在每个节点上添加时间同步:



2.2.6 关闭selinux

●查看selinux是否开启:


●永久关闭selinux,需要重启:


●临时关闭selinux,重启之后,无效:


2.2.7 关闭swap分区

●永久关闭swap分区,需要重启:


●临时关闭swap分区,重启之后,无效::


2.2.8 将桥接的IPv4流量传递到iptables的链

●在每个节点上将桥接的IPv4流量传递到iptables的链:





2.2.9 开启ipvs

●在kubernetes中service有两种代理模型,一种是基于iptables,另一种是基于ipvs的。ipvs的性能要高于iptables的,但是如果要使用它,需要手动载入ipvs模块。
●在每个节点安装ipset和ipvsadm:


●在所有节点执行如下脚本:


●授权、运行、检查是否加载:


●检查是否加载:


2.2.10 重启三台机器

●重启三台Linux机器:


2.3 每个节点安装Docker、kubeadm、kubelet和kubectl

2.3.1 安装Docker

●安装Docker:





●设置Docker镜像加速器:





2.3.2 添加阿里云的YUM软件源

●由于kubernetes的镜像源在国外,非常慢,这里切换成国内的阿里云镜像源:


2.3.3 安装kubeadm、kubelet和kubectl

●由于版本更新频繁,这里指定版本号部署:


●为了实现Docker使用的cgroup drvier和kubelet使用的cgroup drver一致,建议修改"/etc/sysconfig/kubelet"文件的内容:



●设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动:


2.4 查看k8s所需镜像

●查看k8s所需镜像:
 

查看k8s所需镜像.png



2.5 部署k8s的Master节点

●部署k8s的Master节点(192.168.18.100):
 

部署k8s的Master节点1.png

部署k8s的Master节点2.png



●根据提示消息,在Master节点上使用kubectl工具:


2.6 部署k8s的Node节点

●根据提示,在192.168.18.101和192.168.18.102上添加如下的命令:
 

部署k8s的Node节点.png



●默认的token有效期为2小时,当过期之后,该token就不能用了,这时可以使用如下的命令创建token:



2.7 部署CNI网络插件

●根据提示,在Master节点上使用kubectl工具查看节点状态:
 

根据提示,在Master节点使用kubectl工具查看节点状态.png



●kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可,本次选择flannel,如果网络不行,可以使用本人提供的

kube-flannel.yml(5 KB)

,当然,你也可以安装calico,请点这里

calico.yaml(183 KB)

,推荐安装calico。
●在Master节点上获取flannel配置文件(可能会失败,如果失败,请下载到本地,然后安装):


●使用配置文件启动flannel:


●查看部署CNI网络插件进度:
 

查看部署CNI网络插件进度.png



●再次在Master节点使用kubectl工具查看节点状态:
 

根据提示,在Master节点使用kubectl工具查看节点状态.png



●查看集群健康状况:
 

查看集群健康状况1.png


 

查看集群健康状况2.png



3 服务部署

3.1 前言

●在Kubernetes集群中部署一个Nginx程序,测试下集群是否正常工作。

3.2 步骤

●部署Nginx:


●暴露端口:

Shell复制代码

1

kubectl expose deployment nginx --port=80 --type=NodePort


●查看服务状态:

Shell复制代码

1

kubectl get pods,svc

查看服务状态.png

浏览器访问Nginx.png


4 kubernetes中kubectl命令自动补全

Shell复制代码

1

yum install -y bash-completion

Shell复制代码

1

source /usr/share/bash-completion/bash_completion

Shell复制代码

1

source <(kubectl completion bash)

Shell复制代码

1

echo “source <(kubectl completion bash)” >> ~/.bashrc

Shell复制代码

1

vim /root/.bashrc

Shell复制代码

1

source /usr/share/bash-completion/bash_completion

Shell复制代码

1

source <(kubectl completion bash)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值