文章目录

  • k8s节点状态介绍
  • 配置宿主机使用k8s内部域名
  • 使用KubeKey 升级kubesphere
  • 使用KubeKey添加节点
  • 使用KubeKey下架节点
  • 使用k8s命令添加新节点
  • k8s集群备份与恢复
    • 环境准备
    • 备份与还原
      • 在集群A和B中安装Velero
      • 集群A备份操作
      • 集群B还原备份操作

注意:所有节点运维操作前建议使用 Velero 来备份和迁移 Kubernetes 资源以及持久化存储卷

k8s节点状态介绍

在 Kubernetes 中,节点(Node)是集群中的工作节点,用于运行容器化应用程序。节点状态描述了节点的运行状况和可用性。以下是 Kubernetes 中节点状态的一些常见指标:

  1. Ready(就绪):表示节点已经准备好接受工作负载。节点必须处于就绪状态才能被调度器选择来运行容器。
  2. NotReady(未就绪):表示节点当前不可用或无法接受新的工作负载。可能是由于节点上的故障、网络问题或其他原因导致的。
  3. OutOfDisk(磁盘空间不足):表示节点的磁盘空间不足,无法继续运行容器。
  4. MemoryPressure(内存压力):表示节点的内存资源不足,无法继续运行容器。
  5. DiskPressure(磁盘压力):表示节点的磁盘资源不足,无法继续运行容器。
  6. PIDPressure(进程数压力):表示节点上的进程数已达到限制,无法继续运行容器。
  7. NetworkUnavailable(网络不可用):表示节点的网络连接不可用,无法与其他节点或服务通信。
  8. Unschedulable(不可调度):表示节点当前被标记为不可调度,即调度器不会将新的工作负载分配到该节点上。

这些节点状态可以通过运行 kubectl get nodes 命令来查看,其中的 STATUS 列会显示节点的状态信息。

配置宿主机使用k8s内部域名

参考:k8s篇-集群内的DNS原理与配置和K8s hosts 解析 HostAliases
集群node节点上的进程,如果希望能够访问到集群内的服务,可以修改node节点上的/etc/resolv.conf文件中的nameserver配置,将nameserver指定为集群coredns的ClusterIP来达到目的。

  1. 查找coredns的ClusterIP

  1. 修改resolv.conf文件:
vi /etc/resolv.conf# 修改内容如下nameserver 10.20.0.3nameserver 114.114.114.114nameserver 8.8.8.8 

resolv.conf 内容顺序影响:
在 CentOS 中,/etc/resolv.conf 文件用于配置系统的 DNS 解析器。该文件中的内容顺序确实会影响 DNS 解析的行为。
/etc/resolv.conf 文件可以包含多个 DNS 服务器的 IP 地址,并且按照顺序进行解析。当系统需要解析主机名时,它会按照文件中列出的 DNS 服务器的顺序进行查询,直到找到可用的 DNS 服务器或解析成功。

  1. 测试:
ping redis.kubesphere-system.svc.cluster.local

这样配置后jumpserver部署可以考虑使用docker-compse的部署方式,官网安装参考:离线安装 – JumpServer 文档

使用KubeKey 升级kubesphere

注意:升级不能跨版本,如v3.3.x 的集群集群升级到v3.4.x 的集群,需将集群挨版本升级到v3.3.x。

运行以下命令,将您的集群升级至 KubeSphere 3.4 和 Kubernetes v1.22.12:

# 在安装篇已经生成sample.yaml文件./kk upgrade --with-kubernetes v1.22.12 --with-kubesphere v3.4.1 -f sample.yaml

若是担心新版配置文件和当前版本存在差异,可重新下载KubeKey进行对修改配置

使用KubeKey添加节点

官方文档:添加新节点
修改生成的配置文件config-sample.yaml,添加如下配置

./kk add nodes -f config-sample.yaml

执行上述命令出现:参考安装篇在ksnode27节点上安装前置依赖

重新执行等待安装,出现如下信息则安装成功

验证安装结果

使用KubeKey下架节点

删除节点

# 查看集群节点kubectl get node -o wide# <nodeName>为下架节点名称./kk delete node <nodeName> -f config-sample.yaml

当出现如下信息则下架成功:

验证下架是否成功:


使用k8s命令优雅下架节点
k8s 下线node正确处理姿势
:::info
在 Kubernetes 集群中下架节点需要执行以下步骤:
:::
标记节点不可调度:在下架节点之前,你需要将节点标记为不可调度,以防止 Kubernetes 在该节点上调度新的 Pod。你可以使用以下命令将节点标记为不可调度:
转移 Pod:在将节点下架之前,你需要将节点上的 Pod 转移到其他节点上。你可以使用以下命令将节点上的 Pod 转移到其他节点上:
从集群中删除节点:在将节点下架并转移 Pod 后,你可以将节点从 Kubernetes 集群中删除。你可以使用以下命令将节点从集群中删除:

  1. 查看集群节点
kubectl get node -o wide
  1. 节点不可调度
kubectl cordon 

在上面的命令中, 是要下架的节点的名称。

节点重新调度:

kubectl uncordon 
  1. 节点驱逐
kubectl drain 

在上面的命令中, 是要下架的节点的名称。kubectl drain 命令将停止节点上的所有 Pod,并将它们转移到其他节点上。如果你希望在转移 Pod 之前强制删除它们,可以使用 –force 和 –delete-local-data 标志。

  1. 节点下架
kubectl delete node 

在上面的命令中, 是要下架的节点的名称。
完成上述步骤后,节点将被从 Kubernetes 集群中删除,并且该节点上的 Pod 将被转移到其他节点上。请注意,在将节点下架之前,你需要确保节点上的所有应用程序都已停止,并且在下架节点期间不会有任何重要的任务运行。

使用k8s命令添加新节点

要将新节点添加到 Kubernetes 集群中,需要完成以下步骤:

  1. 安装 Kubernetes 软件和依赖项:在新节点上安装 Docker 和 Kubernetes 软件,以便在该节点上运行容器和管理集群。
  2. 加入集群:使用 kubeadm join 命令将新节点加入到 Kubernetes 集群中。在加入集群之前,需要获取 kubeadm join 命令的参数,这些参数可以从运行 kubeadm init 命令时生成的输出中获取。在新节点上执行以下命令:
kubeadm join : --token  --discovery-token-ca-cert-hash 

在上面的命令中, 是 Kubernetes 控制平面节点的主机名或 IP 地址, 是 Kubernetes 控制平面节点的端口号, 是加入集群所需的令牌, 是用于发现集群的 CA 证书哈希。这些参数可以从运行 kubeadm init 命令时生成的输出中获取。

  1. 验证节点状态:使用 kubectl get nodes 命令验证新节点已成功添加到 Kubernetes 集群中。在节点成功加入集群后,节点状态应为 Ready。
  2. 在将新节点添加到 Kubernetes 集群之前,你需要确保新节点具有与其他节点相同的操作系统、软件和配置。否则,在节点加入集群后可能会出现不兼容或不一致的情况,从而导致集群出现问题。

k8s集群备份与恢复

备份源环境的多节点 KubeSphere 集群 A,在目标环境上恢复此多节点 KubeSphere 集群。

注意:建议定期备份,或在节点运维前进行备份
参考:Velero Kubernetes备份恢复之velero实战

环境准备

  1. 源集群 A (master, node1, node2):已经部署 KubeSphere-v3.0.0
  2. 目标集群 B (master, node1, node2): 已经部署 Kubernetes-v1.17.9
  3. 独立的对象存储 Minio (虚机)
  4. 虚机操作系统:Centos 7

备份与还原

在集群A和B中安装Velero

  1. 安装Velero


  1. 进入解压目录,创建Velero和minio的凭证

  1. 创建备份目标源

集群A备份到minio,集群B从minio恢复

集群A备份操作

  1. 【集群A master上操作】首先备份存储对象文件,因为还原的时候不会生成存储对象
kubectl get sc local -o yamlopenebs-sc.yaml
  1. 【集群A master上操作】将存储对象文件拷贝到集群B master上
scp -r openebs-sc.yaml root@192.168.0.8:/root/
  1. 查看mster端的污点

  1. 取消master端的污点

  1. 查看PV挂载情况

  1. 注释挂载PV【没挂载才能备份】

  1. 备份名称空间


集群B还原备份操作

  1. 查看备份资源,确认还原顺序

  1. 还原kube-system数据

查看pod,还原情况

  1. 还原不会创建存储对象,需手动创建


查看状态

  1. 还原污点

  1. 还原kubesphere-system数据

  1. 还原kubesphere-controls数据

  1. 还原kubesphere-monitoring命名空间数据

  1. 还原test空间数据

  1. 查看还原状态

  1. 登录ks验证还原情况