一、环境说明

1.1 系统及组件版本

OS:CentOS7
Kernel: 4.44
Docker: 19.04
kubectl: 1.15.1
kubernetes: 1.15.1

1.2 部署架构

1.2.1 Master

IP: 192.168.247.10
Hostname: k8s-master01

1.2.2 Node

IP: 192.168.247.20
Hostname: k8s-node01

IP:192.168.247.21
Hostname: k8s-node02

二、初始化配置

2.1 设置主机名

2.1.1 Master节点

2.1.2 Node01节点

2.1.3 Node02节点

2.2 安装依赖组件

2.3 设置防火墙

在K8S中,kube-proxy其主要工作之一就是通过iptables策略来实现的service到pod的访问,Calico网络的主机间的路由转发也是基于iptables的路由策略实现。这是非常主要的一环

2.4 关闭SELINUX和swap

kubeadm在进行init时会检测swap分区有没有关闭

2.4 调整内核参数

2.5 调整系统时区

2.6 设置rsyslogd 和systemd journal

CentOS7开始默认会有2个日志服务在同时工作,我们关闭其中一个

2.7 关闭系统不需要的服务

2.8 升级系统内核

CentOS 7.x系统自带的3.10.x内核存在一些Bugs,导致运行的Docker、Kubernetes不稳定

重启后确认内核版本

2.9 为kube-proxy开启ipvs

在新版本的K8S中service已经支持通过lvs的调试方式,这里开启ipvs的前置条件

三、Docker

3.1 安装Docker

3.1.1 加载阿里云的镜像源

3.1.2 更新并安装Docker

3.1.3 再次调整内核启动顺序,从4.4启动

更新后会回到系统中默认更新的比较新的内核,所以更新后需要再次设置内核启动顺序

3.2 配置Docker运行环境

3.2.1 创建 /etc/docker 目录

3.2.2 设置docker开机启动

3.2.3 配置 daemon

默认centos7中会有2个cgroup组件[cgroupfs,systemd管理的cgroup],为了统一,这里设置使用systemd管理的cgroup来进行cgroup的隔离
这里并设储存日志的方式改成json-file,并设置大小为100m
后期可以通过/var/log/contrains目录下查看容器的日志

3.2.4 创建存放docker生成的子配置的目录

四、kubeadm

4.1 安装kubeadm

4.1.1 配置阿里云的镜像源

4.1.2 安装

4.1.3 设置kubelet开机启动

4.2 Master节点初始化

4.2.1 导出配置初始化配置

4.2.2 修改配置文件

vim kubeadm-config.yaml

4.2.3 添加启用lvs的配置

vim kubeadm-config.yaml

4.2.4 初始化

–experimental-upload-certs 从1.13版本开始,自动颁发证书

看到如下提示表示初始化成功,根据提示执行即可

根据提示执行

查看节点状态

这里可以看到master节点的STATUS目前还是NotReady的状态,这是因为还没有部署网络组建的原因,我可以看以看到初始化信息中也有提示

4.2.5 安装Flannel网络组件

下载Flannel的部署脚本

安装Flannel

这个过程会比较久,可以通过watch监视其状态

我们再来查看Master节点的状态
kubectl get node -o wide

安装完成后,系统中会出来一个flannel.1的网络,其网段是10.244.0.0

4.3 Node节点加入集群

这里直接在Node节点上执行Master初始化时最后提示的那句指令即可

4.3.1 执行kubeadm join

在Node01和Node02节点上执行
kubeadm join 192.168.247.10:6443 –token abcdef.0123456789abcdef –discovery-token-ca-cert-hash sha256:26c7af65a7603badd854d389d3bb3650c45ee667344d541d01fd2101fd628ea4

4.3.1 在Master节点上查看Node节点状态

4.3.2 在Master节点上查看所有Pod状态

kubectl get pod -n kube-system -o wide



如果想赏钱,可以用微信扫描下面的二维码,一来能刺激我写博客的欲望,二来好维护云主机的费用; 另外再次标注博客原地址 itnotebooks.com 感谢!

手把手搭建CI/CD(一)

gitlab + tekton + argoCD

阅读全文

自动分析国家关于每年的法定节假日安排公告,生成查询接口自动判断作息日

背景 工作中经常遇到需要根据作息去做排班系统、跑定时报表任务、统一告警通道、巡检等等场景,之前是比较粗暴的区分周一~周五、周六和周日这样,遇到法定节...

阅读全文

Golang Terraform 创建阿里云ECS云主机

封装NewTerraform方法 将Terraform的环境相关信息都在这个方法内定义完成 1. Terraform工作目录定义 2. Plugins初始化,考虑到在线初始化太慢,这里是提前下...

阅读全文

欢迎留言