【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. 准备apiserver、controller-manager、scheduler的启动参数配置文件
  5. 准备controller-manager、scheduler、kubectl的kubeconfig集群引导配置文件(用于连接和验证apiserver)
  6. 启动apiserver、controller-manager、scheduler的服务进程
  7. 执行kubectl get cs命令查看master组件的健康状态

部署node组件

  1. 安装容器引擎
  2. 获取二进制文件 kubelet kube-proxy
  3. 准备kubelet和kube-proxy的kubeconfig集群引导配置文件bootstrap.kubeconfig(kubelet首次访问apiserver时使用的文件)、kube-proxy.kubeconfig
  4. 准备kubelet和kube-proxy的启动参数配置文件
  5. 启动kubelet服务进程(kubelet首次启动,会使用bootstrap.kubeconfig向apiserver发起连接和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
相关推荐
Decay__1 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
测试界的小码农1 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
茶栀(*´I`*)2 小时前
SQL 性能分析:从慢查询日志到执行计划的完整定位方法
数据库·sql
艺杯羹3 小时前
1Panel 装好后 ufw 仍是 inactive:一次服务器安全盲区复盘
服务器·数据库·安全·网络安全·系统架构·实战·1panel
陈希1233 小时前
负载均衡与高可用:LVS、HAProxy、Keepalived 实战
运维·负载均衡·lvs
code2cat3 小时前
【随笔】MCP工具重试:任务已经创建,响应丢了怎么办
数据库·mcp
Star(up up up)4 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
女神下凡5 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件
落羽的落羽5 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
wuyk5555 小时前
Spider-第10讲-SQLite持久化与去重
数据库·爬虫·sqlite