K8Sv1.18-02.k8s集群环境的搭建
1 环境规划
1.1 集群类型
- Kubernetes集群大致分为两类:一主多从和多主多从。
- 一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。
- 多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
1.2 安装方式
- kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包。
- ① minikube:一个用于快速搭建单节点的kubernetes工具。
- ② kubeadm:一个用于快速搭建kubernetes集群的工具。
- ③ 二进制包:从官网上下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效(生产环境建议使用二进制)。
- 我们需要安装kubernetes的集群环境,但是又不想过于麻烦,所以选择kubeadm方式。
1.3 主机规划
k8s-master2将在高可用中使用、后期涉及到高可用K8S集群时再添加。
主机名 | IP地址 | 操作系统 | 配置 |
---|---|---|---|
k8s-master | 192.168.117.100 | CentOS7.9,基础设施服务器 | 2核CPU,2G内存,50G硬盘 |
k8s-node1 | 192.168.117.101 | CentOS7.9,基础设施服务器 | 2核CPU,2G内存,50G硬盘 |
k8s-node2 | 192.168.117.102 | CentOS7.9,基础设施服务器 | 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以上):
1 |
|
2.2.2 关闭防火墙、关闭selinux、dns
- 关闭防火墙:
1 |
|
- 关闭dns服务:
1 |
|
- 关闭selinux:
1 |
|
2.2.3 设置主机名
- 设置主机名:
1 |
|
- 按照不同主机进行设置:
1 |
|
2.2.4 主机名解析
- 为了方便后面集群节点间的直接调用,需要配置一下主机名解析,企业中推荐使用内部的DNS服务器。
1 |
|
- 测试连通性:
1 |
|
2.2.4 时间同步
- kubernetes要求集群中的节点时间必须精确一致,所以在每个节点上添加时间同步:
1 |
|
2.2.5 关闭swap分区
- 永久关闭swap分区,需要重启:
如果不关闭swap分区会影响集群的速度
1 |
|
2.2.6 修改linux内核参数
- 将桥接的IPv4流量传递到iptables的链
- 在每个节点上将桥接的IPv4流量传递到iptables的链:
1 |
|
- 加载br_netfilter模块
1 |
|
1 |
|
2.2.7 开启ipvs
在kubernetes中service有两种代理模型,一种是基于iptables,另一种是基于ipvs的。ipvs的性能要高于iptables的,但是如果要使用它,需要手动载入ipvs模块。
在每个节点安装ipset和ipvsadm:
1 |
|
- 在所有节点执行如下脚本:
用于加载ipvs模块
1 |
|
- 授权、运行、检查是否加载:
1 |
|
- 检查是否加载:
1 |
|
2.2.8 重启服务器
1 |
|
2.3 安装Docker、kubeadm、kubelet和kubectl
2.3.1 安装Docker
- 安装Docker:
1 |
|
- 修改Docker配置文件:
1 |
|
2.3.2 安装kubeadm、kubelet和kubectl
- 由于kubernetes的镜像源在国外,非常慢,这里切换成国内的阿里云镜像源:
1 |
|
- 由于版本更新频繁,这里指定版本号部署:
1 |
|
- 为了实现Docker使用的cgroup drvier和kubelet使用的cgroup drver一致,建议修改”/etc/sysconfig/kubelet”文件的内容:
1 |
|
- 设置为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动:
1 |
|
2.4 查看k8s所需镜像
- 查看k8s所需镜像:
1 |
|
2.5 部署k8s的Master节点
- 部署k8s的Master节点(192.168.117.100):
1 |
|
- 根据提示消息,在Master节点上使用kubectl工具:
1 |
|
2.6 部署k8s的Node节点
- 根据提示,在192.168.117.102和192.168.117.103上添加如下的命令:
1 |
|
- 默认的token有效期为2小时,当过期之后,该token就不能用了,这时可以使用如下的命令创建token:
1 |
|
- 查看节点状态
1 |
|
2.7 部署CNI网络插件
- 根据提示,在Master节点上使用kubectl工具查看节点状态:
发现状态为NotReady
1 |
|
- kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可,本次选择flannel
- 在Master节点上获取flannel配置文件(可能会失败,如果失败,请下载到本地,然后安装):
- 使用配置文件启动flannel:
1 |
|
- 查看部署CNI网络插件进度:
1 |
|
- 再次在Master节点使用kubectl工具查看节点状态:
1 |
|
- 查看集群健康状况:
1 |
|
3 服务部署
3.1 前言
- 在Kubernetes集群中部署一个Nginx程序,测试下集群是否正常工作。
3.2 步骤
- 部署Nginx:
1 |
|
- 暴露端口:
1 |
|
- 查看服务状态:
1 |
|
- 链接测试
4 kubernetes中kubectl命令自动补全
1 |
|
K8Sv1.18-02.k8s集群环境的搭建
https://www.gasmaze.com/posts/987cdc5b.html