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验证还原情况
相关推荐
周末不下雨4 分钟前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
耗同学一米八1 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
东华果汁哥1 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
肖永威2 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
Code_Artist2 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
布鲁格若门2 小时前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
Eternal-Student2 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
dessler2 小时前
云计算&虚拟化-kvm-扩缩容cpu
linux·运维·云计算
DC_BLOG2 小时前
Linux-Apache静态资源
linux·运维·apache
码农小丘2 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器