目录
一.部署etcd
- 使用cfssl工具签发证书和私钥文件
- 解压etcd软件包,获取二进制文件 etcd etcdctl
- 准备etcd集群配置文件
- 启动etcd服务进程,将所有etcd节点加入到集群中
etcd操作
#查看etcd集群健康状态
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 -wtable endpoint health
#查看etcd集群状态信息
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 -wtable endpoint status
#查看etcd集群成员列表
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 -wtable member list
#插入键值
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 put 键名 '键值'
#查询键值
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 get 键名
#查看所有的键
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 --prefix --keys-only get ""
#删除键值
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 del 键名
#备份etcd数据库
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 snapshot save 备份文件路径
#查看备份数据的信息
ETCDCTL_API=3 etcdctl -wtable snapshot status 备份文件路径
#恢复etcd数据库
ETCDCTL_API=3 etcdctl --data-dir etcd数据存储目录 snapshot restore 备份文件路径
二、部署master组件
- 使用cfssl工具签发证书和私钥文件
- 解压K8S软件包,获取二进制文件 kube-apiserver kube-controller-manager kube-scheduler
- 准备 kube-apiserver 启动时要调用的 bootstrap-token 认证文件(token.csv)
- 准备 kube-apiserver kube-controller-manager kube-scheduler 的启动参数配置文件
- 准备 kube-controller-manager kube-scheduler kubectl 的 kubeconfig 集群引导配置文件(用于连接和验证 apiserver)
- 依次启动 kube-apiserver kube-controller-manager kube-scheduler 服务进程
- 执行 kubectl get cs 命令查看 master 组件的健康状态
三、部署node组件
- 获取二进制文件 kubelet kube-proxy,安装容器引擎
- 准备 kubelet kube-proxy 的启动参数配置文件
- 准备 kubelet kube-proxy 的 kubeconfig 集群引导配置文件 bootstrap.kubeconfig(kubelet首次访问apiserver时使用的文件) kube-proxy.kubeconfig
- 启动 kubelet 服务进程,向 apiserver 发起 CSR 请求自动签发证书,master 通过 CSR 请求后会由 controller-manager 生成 kubelet 的证书,再由 apiserver 发送给 kubelet
- 加载 ipvs 模块,启动 kube-proxy 服务进程
- 安装 cni 网络插件(flannel/calico,实现Pod跨节点通信)和 coreDNS(为K8S的Pod提供DNS解析功能,可以使在Pod中根据service的资源名称解析出对应的clusterIP)
- 执行 kubectl get nodes 命令查看 node 节点状态信息
四、K8S kubeadm安装
- kubeadm init 在使用kubeadm方式安装K8S集群时,可根据集群初始化配置文件或配置参数选项快速的初始化生成一个K8S的master管理控制节点
- kubeadm join 根据kubeadm init初始化的提示信息快速的将一个master节点或node节点加入到K8S集群中
- 所有节点进行初始化(防火墙、selinux、系统时间、内核版本、主机名、内核参数等),安装容器引擎、kubeadm、kubelet、kubectl,部署 nginx/haproxy 负载均衡器和 keepalived 高可用
- 执行 kubeadm config print init-defaults 命令生成K8S集群初始化配置文件并进行修改配置
- 执行 kubeadm init --config 指定初始化配置文件 命令进行K8S集群的初始化,生成K8S的master管理控制节点
- 在其它节点执行 kubeadm join 命令将其它 master 节点或 node 节点加入到K8S集群中
- 安装 cni 网络插件(flannel/calico,实现Pod跨节点通信)