kubernetes 如何在kubenetes中使用带下划线的服务名?

i5desfxk  于 2024-01-07  发布在  Kubernetes
关注(0)|答案(1)|浏览(183)

我们曾经选择docker swarm作为我们系统的容器编排。今年我们切换到kubenetes。我们有一个后端服务,由http://web_api:10001访问。这里是我们用来在kubenetes中创建Serviceweb_api.yml

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: web_api
  5. namespace: my-system
  6. spec:
  7. selector:
  8. app: web_api
  9. ports:
  10. - protocol: TCP
  11. port: 10001
  12. targetPort: 10001

字符串
但是,Service中不允许使用名称web_api。我的问题是我如何在这里仍然使用web_api?如果我们修改访问http://web_api:10001的其他服务,那将是一个很大的工作量,因为我们有太多的服务依赖于http://web_api:10001
谁能给我给予一个忠告?

2eafrhcq

2eafrhcq1#

在Kubernetes中,服务名称必须遵守DNS标签标准,这意味着它们必须:

  • 最多包含63个字符。
  • 仅包含双字母数字字符或“-”。
  • 以字母数字字符开头。
  • 以字母数字字符结尾。

从我的Angular 来看,你有2个选择,在你的DNS提供商或使用入口控制器创建一个CNAME,让我解释最后一个。
其想法是使用Kubernetes Ingress将流量从特定URL路由到重命名的服务(web-api)。这种方法允许您在遵循Kubernetes命名约定的同时维护依赖服务中的现有服务URL(http://web_api:10001)。

1.验证您的服务

首先,重命名您的服务以符合DNS命名约定。例如,在服务定义中将web_API更改为web-API:

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: web-api
  5. namespace: my-system
  6. spec:
  7. selector:
  8. app: web-api
  9. ports:
  10. - protocol: TCP
  11. port: 10001
  12. targetPort: 10001

字符串

2.设置Ingress Controller

  1. helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
  2. helm repo update
  3. helm install nginx-ingress ingress-nginx/ingress-nginx

3.创建Ingress资源

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: web-api-ingress
  5. namespace: my-system
  6. spec:
  7. rules:
  8. - host: "web_api.my-domain.com"
  9. http:
  10. paths:
  11. - path: /
  12. pathType: Prefix
  13. backend:
  14. service:
  15. name: web-api
  16. port:
  17. number: 10001


在这个例子中,任何到web_api.my-domain.com的流量都被路由到web-api服务。你需要调整主机以匹配你的DNS设置,或者使用基于路径的路由(如果更合适的话)。

展开查看全部

相关问题