【k8s集群应用】K8S二进制安装大致步骤(简略版)

文章目录

K8S二进制安装

部署etcd

  1. 使用cfssl工具签发证书和私钥
  2. 下载解压etcd软件包,获取二进制文件 etcd etcdctl
  3. 准备etcd集群的配置文件
  4. 启动etcd服务进程,将所有etcd节点加入到集群中

测试etcd集群(可选)

查看etcd集群健康状态

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 -wtable  endpoint health

查看etcd集群信息

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 -wtable  endpoint status

查看etcd集群成员列表

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥 -wtable  member list

插入键值

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥  put 键名 '键值'

查询键值

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥  get 键名

删除键值

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥  del 键名

查看所有的键

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥  get --keys-only --prefix ""

备份etcd数据库

bash 复制代码
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA证书 --cert=客户端证书 --key=客户端私钥  snapshot save  备份文件路径

查看备份数据的信息

bash 复制代码
ETCDCTL_API=3 etcdctl -wtable  snapshot status 备份文件路径
恢复etcd数据库
  1. 关闭etcd数据库
bash 复制代码
systemctl stop etcd
  1. 备份当前数据目录
bash 复制代码
mv /var/lib/etcd  /var/lib/etcd.bak
  1. 在各个节点使用 etcdctl snapshot restore 恢复数据
bash 复制代码
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> 
  1. 启动etcd数据库
bash 复制代码
systemctl start etcd
  1. 使用etcdctl验证etcd集群状态和数据

部署master组件

  1. 使用cfssl工具签发证书和私钥
  2. 下载解压K8S server软件包,获取二进制文件kube-apiserver kube-controller-manager kube-scheduler kubectl
  3. 准备apiserver启动时需要调用的token.csv文件
  4. 准备apiservercontroller-managerscheduler的启动参数配置文件
  5. 准备controller-managerschedulerkubectl的kubeconfig集群引导配置文件(用于连接和验证apiserver)
  6. 启动apiservercontroller-managerscheduler的服务进程
  7. 执行kubectl get cs命令查看master组件的健康状态

部署node组件

  1. 安装容器引擎
  2. 获取二进制文件 kubelet kube-proxy
  3. 准备kubeletkube-proxykubeconfig集群引导配置文件bootstrap.kubeconfig(kubelet首次访问apiserver时使用的文件)、kube-proxy.kubeconfig
  4. 准备kubeletkube-proxy的启动参数配置文件
  5. 启动kubelet服务进程(kubelet首次启动,会使用bootstrap.kubeconfigapiserver发起连接和CSR请求签发证书,master批准CSR请求后会由controller-manager生成kubelet的证书,再由apiserver发送给kubelet
  6. 先加载ipvs模块,再启动kube-proxy服务进程
  7. 安装CNI网络插件(flannel/caclico,创建Pod网络和实现Pod跨节点通信)和coreDNS(为K8S内的Pod提供DNS解析服务,可以使得在Pod中根据service资源名称解析成对应的clusterIP)
  8. 执行kubectl get nodes名称查看node节点的状态

K8S kubeadm安装

关键命令

bash 复制代码
kubeadm init
kubeadm join
  1. 所有节点进行初始化(防火墙、selinux、系统时间、内核版本、主机名、内核参数、ipvs模块),安装容器引擎、kubelet、kubeadm、kubectl,部署nginx/haproxy负载均衡和keepalived高可用
  2. 执行kubeadm config print init-defaults命令生成K8S集群初始化配置文件,并进行参数修改配置
  3. 执行kubeadm init --config 指定初始化配置配置文件 进行K8S集群的初始化,生成K8S集群的管理控制节点(master节点)
  4. 在其它节点执行kubeadm join命令将其它的master或node节点加入到K8S集群中
  5. 安装cni网络插件(flannel、calico)

更新kubeadm安装的K8S证书有效期

方法一

在master节点执行脚本./update-kubeadm-cert.sh all,将所有证书自动更新为十年有效期

方法二
bash 复制代码
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组件
查看证书有效期
bash 复制代码
kubeadm certs check-expiration
openssl x509 -noout -dates -in /etc/kubernetes/pki/*.crt
相关推荐
渡我白衣3 小时前
【MySQL基础】(2):数据库基础概念
数据库·人工智能·深度学习·神经网络·mysql·机器学习·自然语言处理
Cyber4K3 小时前
【Kubernetes专项】K8s 控制器 StatefulSet 从入门到企业实战应用
云原生·容器·kubernetes
BUG_MeDe3 小时前
LINUX MTU/MSS(1500 1460等)的一些理解
linux·运维·服务器
风流倜傥唐伯虎3 小时前
Windows 版 Docker 的 Linux 环境(docker-desktop)与 builder-jammy-base:latest 镜像核心区别
linux·docker·容器
alien爱吃蛋挞3 小时前
【JavaEE】万字详解Mybatis(上)
数据库·java-ee·mybatis
曹牧3 小时前
Nginx:正向代理与反向代理
运维·nginx
写代码的【黑咖啡】3 小时前
HiveSQL 语法详解与常用 SQL 写法实战
数据库·sql
Ha_To3 小时前
2026.1.30 搭建docker仓库
运维·docker·容器
lpfasd1233 小时前
Docker Desktop 在国内使用的囧境:镜像拉取失败、加速器失效与破局之道
运维·docker·容器
黄筱筱筱筱筱筱筱3 小时前
7.适合新手小白学习Python的异常处理(Exception)
java·前端·数据库·python