type
status
date
summary
slug
tags
category
password
icon

一、前置准备

准备三台服务器,操作系统centos7.x
硬件配置:CPU2核、内存2GB、硬盘30GB
确保机器间网络互通,时钟同步,所需镜像及资源包下载链接:点击下载
规划:
节点名称
IP
安装组件
k8s-master
192.168.14.101
docker、etcd、kubelet、kube-proxy、kube-apiserver、kube-controller-manager、kube-scheduler
k8s-node1
192.168.14.102
docker、etcd、kubelet、kube-proxy
k8s-node2
192.168.14.103
docker、etcd、kubelet、kube-proxy
docker私有仓库
192.168.14.100
docker(服务器配置可以低点)
三台服务器初始化操作
  • 部署docker本地私有镜像仓库 (192.168.14.100)
  • 上传资源包里面的镜像
  • 本地镜像仓库及资源准备完成

二、安装docker(每个节点都要)

  • 解压资源包 (docker_绿色免安装版.tar.gz),将docker_inspkg下的所有文件放到 /usr/sbin/目录下
  • 修改镜像源地址
  • 使用 systemd 管理 docker
  • 启动并设置开机启动

三、部署Etcd集群

注:为了节省机器,这里与 K8s 节点机器复用 , 也可以独立于 k8s 集群之外部署,只要 apiserver 能连接到就行
  • 准备 cfssl 证书生成工具 , 找任意一台服务器操作,这里用 Master 节点
进入下载下来的资源包路径下,将cfssl_linux-amd64目录中的所有文件复制到 /usr/local/bin/ 下
  • 创建Etcd目录并解压二进制包
  • 创建配置文件
  • 生成自签 CA证书
  • 使用自签 CA 签发 Etcd HTTPS 证书
注: 上述文件 hosts 字段中 IP 为所有 etcd 节点的集群内部通信 IP,一个都不能少!为了方便 后期扩容可以多写几个预留的 IP
  • 拷贝刚才生成的证书到配置文件中的路径
  • systemd 管理 Etcd
  • 设置开机启动
  • 将上面节点 所有生成的文件拷贝到 另外两个节点
  • 分别修改另外两个节点的 etcd.conf 配置文件中的节点名称和当前服务器 IP
  • 设置开机启动
  • 查看集群状态
如果输出healthy: successfully 等字样, 就说明Etcd集群部署成功 。如果有问题第一步先看日志:/var/log/message

四、部署Master节点

1、部署 kube-apiserver

  • 生成 kube-apiserver自签CA证书
  • 使用自签 CA 签发 kube-apiserver HTTPS 证书
注:上述文件 hosts 字段中 IP 为所有 Master/LB/VIP IP,一个都不能少!为了方便后期扩容 可以多写几个预留的 IP
  • 创建kube-apiserver目录并解压二进制包
  • 创建配置文件
  • 证书拷贝到配置文件中的路径

1.1、使用 TLS bootstraping 机制来自动颁发客户端证书

TLS Bootstraping:Master apiserver 启用 TLS 认证后,Node 节点 kubelet 和 kube-proxy 要 与 kube-apiserver 进行通信,必须使用 CA 签发的有效证书才可以,当 Node 节点很多时,这 种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。为了简化流程,Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书,kubelet 会以一个低权限用户自动向 apiserver 申请证书,kubelet 的证书由 apiserver 动态签署。所以强烈建议在 Node 上使用这 种方式,目前主要用于 kubelet,kube-proxy 还是由我们统一颁发一个证书。
  • 创建 token 文件
  • systemd 管理 kube-apiserver
  • 启动并设置开机启动

1.2、 授权 kubelet-bootstrap 用户允许请求证书

2、 部署 kube-controller-manager

  • 创建配置文件
  • systemd 管理 kube-controller-manager
  • 启动并设置开机启动

3、 部署 kube-scheduler

  • 创建配置文件
  • systemd 管理 kube-scheduler
  • 启动并设置开机启动
  • 查看集群状态 , 如下输出说明 Master 节点组件运行正常
  • 为master添加禁止调度污点,不让pod调度到master上

五、 部署 Worker节点

  • 在所有 worker node 创建工作目录

1、部署 kubelet

  • 配置参数文件
  • 生成 bootstrap.kubeconfig 文件
  • systemd 管理 kubelet
  • 启动并设置开机启动

2、部署 kube-proxy

  • 配置参数文件 (注意hostnameOverride对应的hostname)
  • 生成 kube-proxy 证书 (master节点操作)
  • 生成 kube-proxy.kubeconfig 文件
  • systemd 管理 kube-proxy
  • 启动并设置开机启动
  • 批准 kubelet 证书申请并加入集群 (在master上操作)

3、 部署 CNI 网络

  • 解压二进制包并移动到默认工作目录
  • 修改flannel.yaml
  • 应用资源配置文件(资源包路径下yaml目录下的 kube-flannel.yaml )
  • 授权 apiserver 访问 kubelet (资源包路径下yaml目录下的 apiserver-to-kubelet-rbac.yaml)

4、新增加 Worker Node

  • 拷贝已部署好的 Node 相关文件到新节点
  • 删除 kubelet 证书和 kubeconfig 文件
  • 修改配置文件主机名
  • 启动并设置开机启动
  • 批准 kubelet 证书申请并加入集群 (在master上操作)
  • 修改节点roles名

六、 部署 Dashboard 和 CoreDNS (在master上操作)

1、部署Dashboard

  • 复制woker节点上的kubelet和kube-proxy所有相关文件到master上
  • 指定Dashboad的pod只部署到master节点(如果不想指定可忽略这步)
  • 默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部
  • 应用资源配置文件,生成pod
  • 创建 service account 并绑定默认 cluster-admin 管理员集群角色

2、 部署 CoreDNS

CoreDNS 用于集群内部 Service 名称解析
  • 修改资源包路径下yaml目录下的 coredns.yaml
a、修改集群域名
b、 修改coredns 容器资源限制
c、 修改集群使用的dnsip
  • 应用资源配置文件coredns.yaml
  • DNS解析测试
 
 
MFA双因子认证服务端Kubernetes之proxysql集群
zoehuawang
zoehuawang
一个普通的干饭人🍚
公告
type
status
date
summary
slug
tags
category
password
icon
🎉zoehuawnag , 欢迎关注🎉