首页 > 其他分享 >kubeasz 安装 K8S 集群启用 NFS 存储问题排查

kubeasz 安装 K8S 集群启用 NFS 存储问题排查

时间:2022-12-21 17:44:55浏览次数:63  
标签:kubeasz data 192.168 client nfs provisioner NFS K8S root

目录

kubeasz 安装 Kubernetes 集群启用 NFS 存储,默认情况无法安装使用问题排查

kubeaszgithub 上开源项目,内部使用 ansible 自动安装 k8s 集群

服务 版本
CentOS 7.9
Kubernetes 1.25
Kubeasz 3.4.2

集群规划

节点名称 IP地址 节点角色
m1 192.168.100.138 master, ansible, kubeasz
n1 192.168.100.139 node
n2 192.168.100.140 node

安装 Kubernetes 集群

详细的安装流程 参考文档 ,需要注意参考文档中 kubeasz 版本为 3.0.1 ,此处为 3.4.2

问题复现

配置文件中默认启用 nfs 存储

$ cd /etc/kubeasz/clusters/k8s

# 配置文件中启用 nfs-provisioner 作为默认的 storageclass
$ cat config.yml

......
# nfs-provisioner 自动安装
nfs_provisioner_install: "yes"
nfs_provisioner_namespace: "kube-system"
nfs_provisioner_ver: "v4.0.2"
nfs_storage_class: "managed-nfs-storage"
nfs_server: "192.168.100.138"
nfs_path: "/data/nfs"
......

安装后 nfs pod 无法启动

容器启动报错

$ kubectl -n kube-system describe pods nfs-client-provisioner-7f7b7dcb96-q9h59

# 容器日志信息
Events:
  Type     Reason       Age                    From               Message
  ----     ------       ----                   ----               -------
  Normal   Scheduled    7m33s                  default-scheduler  Successfully assigned kube-system/nfs-client-provisioner-7f7b7dcb96-mf8pv to 192.168.100.139
  Warning  FailedMount  3m17s (x2 over 5m30s)  kubelet            Unable to attach or mount volumes: unmounted volumes=[nfs-client-root], unattached volumes=[nfs-client-root kube-api-access-ts9gw]: timed out waiting for the condition
  Warning  FailedMount  76s (x3 over 5m28s)    kubelet            MountVolume.SetUp failed for volume "nfs-client-root" : mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t nfs 192.168.100.138:/data/nfs /var/lib/kubelet/pods/867e70d9-6bee-4361-8fd8-322d3b588f29/volumes/kubernetes.io~nfs/nfs-client-root
Output: mount.nfs: Connection refused
  Warning  FailedMount  63s  kubelet  Unable to attach or mount volumes: unmounted volumes=[nfs-client-root], unattached volumes=[kube-api-access-ts9gw nfs-client-root]: timed out waiting for the condition

解决方法

[root@m1 k8s]# kubectl -n kube-system get pods -o wide
NAME                                         READY   STATUS              RESTARTS   AGE    IP                NODE              NOMINATED NODE   READINESS GATES
nfs-client-provisioner-7f7b7dcb96-xr8xt      1/1     ContainerCreating   0          8m3s   172.20.217.4      192.168.100.140   <none>           <none>
  • 登陆 nfs pod 所在服务器,检查 nfs 服务,并挂载 /data/nfs 目录
$ ssh n2

# 发现 nfs 服务默认没有启动需要启动,其他 m1 和 n1 节点也需要启动 nfs 服务
[root@n2 ~]# systemctl enable nfs --now
[root@n2 ~]# systemctl status nfs

# 挂载 /data/nfs 目录无法挂载,进程会 hang 住
[root@n2 ~]# mount -t nfs 192.168.100.138:/data/nfs /mnt
[root@n1 ~]# exportfs  # 信息为空

# 其他 m1 和 n1 节点也需要启动 nfs 服务
[root@m1 ~]# systemctl enable nfs --now
[root@n1 ~]# systemctl enable nfs --now
  • 登陆 m1 服务器,检查 nfs 服务挂载信息是否暴露
$ cat /etc/exports  # 为空

# 配置 nfs 信息,并重启服务
$ echo "/data/nfs *(rw,no_root_squash,no_all_squash,sync)" >> /etc/exports
$ systemctl restart nfs

# 登陆 n2 接重新测试
$ ssh n2
[root@n1 ~]# exportfs
/data/nfs       192.168.100.138
[root@n2 ~]# mount -t nfs 192.168.100.138:/data/nfs /mnt
[root@n2 ~]# df -h
192.168.100.138:/data/nfs   37G   14G   24G  37% /mnt
  • 查看 nfs pod 服务
$ kubectl -n kube-system get pods
NAME                                         READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-7f7b7dcb96-xr8xt      1/1     Running   0          17m

$ kubectl get sc
NAME                  PROVISIONER                                   RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
managed-nfs-storage   k8s-sigs.io/nfs-subdir-external-provisioner   Delete          Immediate           false                  38m

标签:kubeasz,data,192.168,client,nfs,provisioner,NFS,K8S,root
From: https://www.cnblogs.com/evescn/p/16996771.html

相关文章

  • k8s高级存储-GlusterFS存储类(StorageClass)实战
       GlusterFS是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。集成来自多台服务器上的磁盘存储资源到单一全局命名......
  • K8S集群(高可用)搭建详细过程
    多master(高可用)1.安装要求在开始之前,部署Kubernetes集群机器需要满足以下几个条件:一台或多台机器,操作系统 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多可以访问......
  • 部署Kubernetes(k8s)时,为什么要关闭swap、selinux、firewalld
    作者:知乎用户链接:https://www.zhihu.com/question/374752553/answer/2665255695来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。防火墙和s......
  • k8s1.25安装
    一、基础环境准备1)主机名解析为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器#主机名成解析编辑三台服务器的/etc/hosts文件,添......
  • ubuntu配置nfs
    服务器sudoaptinstallnfs-kernel-server/etc/exports中添加共享目录/home/xpy/cig*(rw,sync,no_root_squash)客户端sudoaptinstallnfs-commonmount-tnfs19......
  • 手把手教你一套完善且高效的k8s离线部署方案
    作者:郝建伟背景面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案。系统资源编号主机名称IP资源类型......
  • k8s原理之-Pod控制器--ReplicaSet、Deployment
    一、Pod控制器及其功用Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资......
  • k8s原理之-Flannel网络二进制部署和测试
    一、K8S的ip地址NodeIP:节点设备的IP,如物理机,虚拟机等容器宿主的实际IP。PodIP:Pod的IP地址,是根据docker0网络IP段进行分配的。ClusterIP:Service的IP,是一个虚拟I......
  • k8s原理之-Pod资源调度
    目录Pod资源调度1、常用的预选策略2、优选函数3、节点亲和调度3.1、节点硬亲和性3.2、节点软亲和性4、Pod资源亲和调度4.1、Pod硬亲和度4.2、Pod软亲和度......
  • Kubernetes(k8s) kubectl cluster-info常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......