3.云原生之kubesphere运维

文章目录

注意:所有节点运维操作前建议使用 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.3
    nameserver 114.114.114.114
    nameserver 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:

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

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

使用KubeKey添加节点

官方文档:添加新节点

修改生成的配置文件config-sample.yaml,添加如下配置

java 复制代码
./kk add nodes -f config-sample.yaml

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

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

验证安装结果

使用KubeKey下架节点

删除节点

java 复制代码
# 查看集群节点
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. 查看集群节点
bash 复制代码
kubectl get node -o wide
  1. 节点不可调度

    kubectl cordon <node-name>

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

节点重新调度:

复制代码
kubectl uncordon <node-name>
  1. 节点驱逐

    kubectl drain <node-name>

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

  1. 节点下架

    kubectl delete node <node-name>

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

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

使用k8s命令添加新节点

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

  1. 安装 Kubernetes 软件和依赖项:在新节点上安装 Docker 和 Kubernetes 软件,以便在该节点上运行容器和管理集群。

  2. 加入集群:使用 kubeadm join 命令将新节点加入到 Kubernetes 集群中。在加入集群之前,需要获取 kubeadm join 命令的参数,这些参数可以从运行 kubeadm init 命令时生成的输出中获取。在新节点上执行以下命令:

    kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash <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上操作】首先备份存储对象文件,因为还原的时候不会生成存储对象
yaml 复制代码
kubectl get sc local -o yamlopenebs-sc.yaml
  1. 【集群A master上操作】将存储对象文件拷贝到集群B master上
yaml 复制代码
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验证还原情况
相关推荐
七夜zippoe7 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6488 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满8 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠9 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey9039 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
陈桴浮海9 小时前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
珠海西格电力科技10 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀10 小时前
Linux环境变量
linux·运维·服务器
zzzsde10 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º12 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann