Kubernetes创建v1.Endpoints报错:需指定命名空间,咨询配置方案
Kubernetes Endpoints创建报错:Namespace is required 解决方法
运行你提供的Ansible Playbook时出现的Failed to create object: Namespace is required for v1.Endpoints错误,原因是Endpoints是Kubernetes的命名空间级资源,必须明确指定其归属的命名空间。
可选的命名空间选择
你可以根据部署需求选择以下两种命名空间:
- default命名空间:Kubernetes默认的命名空间,无需提前创建,适合快速测试或无特殊资源分类需求的场景。
- 自定义命名空间:比如
glusterfs、storage这类专门用于存储资源的命名空间,更利于资源的分类管理,但需要提前创建该命名空间。
修改后的Playbook示例
在Endpoints的metadata字段中添加namespace即可解决问题,以下是指定default命名空间的修改版本:
- hosts: 'masters' remote_user: kube become: yes become_user: kube vars: ansible_python_interpreter: /usr/bin/python3 tasks: - name: "Create gluster endpoints on kubernetes master" kubernetes.core.k8s: state: present definition: apiVersion: v1 kind: Endpoints metadata: name: glusterfs-cluster namespace: default # 可替换为你需要的自定义命名空间 labels: storage.k8s.io/name: glusterfs storage.k8s.io/part-of: mine storage.k8s.io/created-by: username subsets: - addresses: - ip: 10.0.0.4 hostname: gluster1 - ip: 10.0.0.5 hostname: gluster2 - ip: 10.0.0.6 hostname: gluster3 - ip: 10.0.0.7 hostname: gluster4 ports: - port: 1
注意事项
如果选择自定义命名空间,需确保该命名空间已存在:
- 可以用Ansible的
kubernetes.core.k8s模块提前创建,或者通过kubectl create namespace <命名空间名称>命令手动创建。 - 后续部署Heketi、StorageClass等相关资源时,要与该Endpoints的命名空间保持一致,避免跨命名空间访问问题。
内容的提问来源于stack exchange,提问作者noname
相关产品推荐
相关产品推荐

