kubernetes - 通过 DNS 或静态 ClusterIP 为 PersistentVolume 配置 NFS 服务器

标签 kubernetes nfs google-kubernetes-engine kube-dns

我有一个运行在 google 容器引擎上的 kubernetes 集群,它定义了一个运行 NFS 服务器的 Pod,我想通过各种 PersistentVolume 在其他 Pod 中访问它s。

如果 NFS 服务在同一个集群中,配置 NFS 服务的最佳方法是什么?

根据各种文档,我发现它不可能依赖 kube-dns,因为启动 kubernetes pod 的节点未配置为将其用作其 DNS。

所以这是不可能的(而且真的不起作用 - 我用各种不同的主机名/FQDN对其进行了测试......)

apiVersion: v1
kind: PersistentVolume
metadata:
  name: xxx-persistent-storage
  labels:
    app: xxx
spec:
  capacity:
    storage: 10Gi
  nfs:
    path: "/exports/xxx"
    server: nfs-service.default.svc.cluster.local  # <-- does not work

我可以通过 kubectl describe svc nfs-service 启动 NFS 服务器并检查其 ClusterIP然后为 PV 硬编码它的 Endpoint-IP(这有效):
apiVersion: v1
kind: PersistentVolume
metadata:
  name: xxx-persistent-storage
  labels:
    app: xxx
spec:
  capacity:
    storage: 10Gi
  nfs:
    path: "/exports/xxx"
    server: 10.2.1.7  # <-- does work

但这感觉不对 - 一旦我需要重新创建 NFS 服务,我就会获得一个新 IP,我必须根据它重新配置所有 PV。
  • 这里的最佳实践是什么?我很惊讶我没有找到任何例子,因为我认为这是很正常的事情 - 不是吗?
  • 是否可以为服务设置一种静态 IP,以便我可以依赖 NFS 服务始终使用相同的 IP?
  • 最佳答案

    你走在正确的轨道上。要确保您的服务使用的是静态 IP,只需添加 clusterIP: 1.2.3.3spec:服务的部分。

    来自规范example :

    In the future, we'll be able to tie these together using the service names, but for now, you have to hardcode the IP.

    关于kubernetes - 通过 DNS 或静态 ClusterIP 为 PersistentVolume 配置 NFS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973882/

    相关文章:

    node.js - nodejs 通过 inode 打开 nfs 文件(或者重新打开文件的最快方式)

    windows - 基于Windows的GKE中的ContainerD节点

    c - NFS 中的强制属性刷新

    Kubernetes Ingress (GCE) 不断返回 502 错误

    ruby-on-rails - Rails 5、Google 容器引擎和 Google Cloud SQL

    amazon-s3 - 在不使用 kubernetes 运行 aws configure 的情况下访问 S3 存储桶

    kubernetes - nginx.ingress.kubernetes.io/use-regex 未按预期工作

    kubernetes - 执行和初始化 kubeadm 时出错

    mongodb - AWS EKS - kubectl 日志 [pod 名称]

    linux - 如何模拟挂起的文件系统?