一、环境说明

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(五)Flink 应用部署

环境 代码托管:gitlab CI:tekton CD: tekton pipline/task: 阿里云 serverless容器(spot实例且按秒计费) 应用:K8S Flink 应用需要解决的是任务的灵活增...

阅读全文

CI/CD(四)VM 应用部署

环境 代码托管:gitlab CI:tekton CD: 代码自实现多批次部署 pipline/task: 阿里云 serverless容器(spot实例且按秒计费) 应用:ECS(ESS) 应用部署在弹性...

阅读全文

CI/CD(三)GPU 应用部署(k8s)

环境 代码托管:gitlab CI:tekton CD: ArgoCD pipline/task: 阿里云 serverless容器(spot实例且按秒计费) 应用:k8s GPU应用的特殊性在于单个镜像的大小在...

阅读全文

欢迎留言