预准备
1、3台机器 centos7.x以上
2、网络互通
3、关闭swap
4、可以通过外网拉取镜像
系统初始化
为etcd和apiserver自签证书
集群内部访问需要证书,外部访问也需要证书
生成etcd证书
自签证书颁发机构(CA)
生成证书
使用自签 CA 签发 Etcd HTTPS 证书
创建证书申请文件
生成证书
部署etcd集群
从Github下载二进制文件
创建etcd工作目录并解压二进制包
创建etcd配置文件
etcd节点1
etcd节点2
etcd节点3
创建systemd管理etcd
启动etcd并设为开机自启
部署master组件
work节点访问apiserver是基于https来访问的,所有需要为apiserver做自签证书
两种访问方式
·1、添加可信任IP列表(推荐使用)
2、携带CA证书发送(每次请求通过CA证书公钥发送,在有些场景中,并不可以携带)
生成 kube-apiserver 证书
kubr-proxy-csr.json work节点使用
server-csr.json master使用
使用自签 CA 签发 kube-apiserver HTTPS 证书
下载二进制文件,下载server包即可,包含master和worker node二进制文件
部署 kube-apiserver
创建配置文件
将刚才生成的证书拷贝到配置文件中的路径
启用 TLS Bootstrapping 机制
TLS Bootstraping:Master apiserver 启用 TLS 认证后,Node 节点 kubelet 和 kube-proxy 要与 kube-apiserver 进行通信,必须使用 CA 签发的有效证书才可以,当 Node节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。为了简化流程,Kubernetes 引入了 TLS bootstraping 机制来自动颁发客户端证书,kubelet会以一个低权限用户自动向 apiserver 申请证书,kubelet 的证书由 apiserver 动态签署所以强烈建议在 Node 上使用这种方式,目前主要用于 kubelet,kube-proxy 还是由我们统一颁发一个证书
TLS bootstraping 工作流程

创建上述配置文件中 token 文件
systemd 管理 apiserver
服务启动并设为开机自启
授权 kubelet-bootstrap 用户允许请求证书
kube-controller-manager
创建配置文件
systemd 管理 controller-manager
启动并设置开机启动
部署 kube-scheduler
创建配置文件
systemd 管理 scheduler
启动并设置开机启动
查看集群状态
安装docker
先安装docker,docker使用yum或者二进制包都可以‘
systemd 管理 docker
创建配置文件
启动并设置开机启动
部署node组件
复制证书文件至各工作节点
配置文件
master01
node01
ndoe02
配置参数文件
生成 bootstrap.kubeconfig 文件
systemd 管理 kubelet
启动并设置开机启动
批准 kubelet 证书申请并加入集群(apiserver上执行)
kube-proxy
创建配置文件
配置参数文件
生成 kube-proxy 证书
生成kube-proxy.kubeconfig
systemd 管理 kube-proxy
启动并设置开机启动
部署集群网络
CNI插件
部署CNI网络
授权apiserver访问kubelet
测试kubernetes集群
在Kubernetes集群中创建一个pod,验证是否正常运行
访问地址:http://NodeIP:Port
小结
kubelet
1、准备安装三台虚拟机,安装操作系统centos7.x
2、对三个安装之后操作系统进行初始化操作
- 关闭防火墙
- 关闭swap
- 修改主机名
- 添加hosts
- 开启桥接流量net.bridge.bridge-nf-call-iptables
- 三台虚拟机时间同步
3、使用cfssl工具生成自签证书(cf表示cloudflare)
- ca-key.pem ca.pem表示自己是CA的证书
- server-key.pem server.pem 提供给etcd服务的证书
4、部署etcd服务
- 下载etcd二进制包
- 配置etcd集群
- 将etcd颁发的证书复制到指定的目录下
- 创建etcd服务文件
5、安装docker
- 使用二进制包安装,并安装启动服务
- 也可以使用yum安装,可指定版本
6、部署master节点
- 为apiserver自签证书,注意添加可信任IP列表(让工作节点可以访问apiserver)
- 下载二进制包(下载server包,包中包含了所有二进制包)
- 配置服务
- 创建启动服务
- controll-manager
- 使用ca.pem ca-keypem证书文件
- 下载二进制包
- 配置服务
- 创建启动服务
- scheduler
- 下载二进制包
- 配置服务
- 创建启动服务
7、部署work节点
- kubelet
- 使用kubelet.crt kubelet.key证书文件
- 下载二进制包
- 配置服务
- 生成bootstrap.kubeconfig文件
- 创建启动服务
- kube-proxy
- 使用kube-proxy.crt kube-proxy-key.pem证书文件
- 下载二进制包
- 配置服务
- 生成kube-proxy.kubeconfig文件
- 创建启动服务
8、部署CNI网络插件
9、授权apiserver访问kubelet
Loading...
keepalived