文章目录
K8S二进制安装
部署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=客户端私钥 del 键名
查看所有的键
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 get --keys-only --prefix ""
备份etcd数据库
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 snapshot save 备份文件路径
查看备份数据的信息
ETCDCTL_API=3 etcdctl -wtable snapshot status 备份文件路径
恢复etcd数据库
- 关闭etcd数据库
systemctl stop etcd
- 备份当前数据目录
mv /var/lib/etcd /var/lib/etcd.bak
- 在各个节点使用 etcdctl snapshot restore 恢复数据
ETCDCTL_API=3 etcdctl snapshot restore /root/etcd.db1 --data-dir /var/lib/etcd --name <节点名称> --initial-advertise-peer-urls https://<当前节点IP>:2380 --initial-cluster etcd01=https://IP1:2380,etcd02=https://IP2:2380,etcd03=https://IP3:2380 --initial-cluster-token <etcd集群Token>
- 启动etcd数据库
systemctl start etcd
- 使用etcdctl验证etcd集群状态和数据
部署master组件
- 使用
cfssl
工具签发证书和私钥 - 下载解压K8S server软件包,获取二进制文件
kube-apiserver kube-controller-manager kube-scheduler kubectl
- 准备apiserver启动时需要调用的
token.csv
文件 - 准备
apiserver
、controller-manager
、scheduler
的启动参数配置文件 - 准备
controller-manager
、scheduler
、kubectl的kubeconfig
集群引导配置文件(用于连接和验证apiserver) - 启动
apiserver
、controller-manager
、scheduler
的服务进程 - 执行
kubectl get cs
命令查看master组件的健康状态
部署node组件
- 安装容器引擎
- 获取二进制文件
kubelet kube-proxy
- 准备
kubelet
和kube-proxy
的kubeconfig
集群引导配置文件bootstrap.kubeconfig
(kubelet首次访问apiserver时使用的文件)、kube-proxy.kubeconfig
- 准备
kubelet
和kube-proxy
的启动参数配置文件 - 启动kubelet服务进程(
kubelet
首次启动,会使用bootstrap.kubeconfig
向apiserver
发起连接和CSR请求签发证书,master
批准CSR请求后会由controller-manager
生成kubelet
的证书,再由apiserver
发送给kubelet
) - 先加载
ipvs
模块,再启动kube-proxy
服务进程 - 安装
CNI
网络插件(flannel/caclico
,创建Pod网络和实现Pod跨节点通信)和coreDNS
(为K8S内的Pod提供DNS解析服务,可以使得在Pod中根据service资源名称解析成对应的clusterIP) - 执行
kubectl get nodes
名称查看node节点的状态
K8S kubeadm安装
关键命令
kubeadm init
kubeadm join
- 所有节点进行初始化(防火墙、selinux、系统时间、内核版本、主机名、内核参数、ipvs模块),安装容器引擎、kubelet、kubeadm、kubectl,部署nginx/haproxy负载均衡和keepalived高可用
- 执行kubeadm config print init-defaults命令生成K8S集群初始化配置文件,并进行参数修改配置
- 执行kubeadm init --config 指定初始化配置配置文件 进行K8S集群的初始化,生成K8S集群的管理控制节点(master节点)
- 在其它节点执行kubeadm join命令将其它的master或node节点加入到K8S集群中
- 安装cni网络插件(flannel、calico)
更新kubeadm安装的K8S证书有效期
方法一
在master节点执行脚本./update-kubeadm-cert.sh all
,将所有证书自动更新为十年有效期
方法二
cp /etc/kubernetes /etc/kubernetes.old #备份
kubeadm certs renew all --config 集群初始化配置文件 #重新更新证书一年有效期
kubeadm init phase kubeconfig all --config 集群初始化配置文件 #更新kubeconfig配置文件
systemctl restart kubelet #重启kubelet服务进程
mv /etc/kubernetes/manifests/*.yaml /tmp && sleep 10 && mv /tmp/*.yaml /etc/kubernetes/manifests/ #重启以Pod形式运行的K8S组件
查看证书有效期
kubeadm certs check-expiration
openssl x509 -noout -dates -in /etc/kubernetes/pki/*.crt