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

i5desfxk  于 4个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(60)

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

apiVersion: v1
kind: Service
metadata:
  name: web_api
  namespace: my-system
spec:
  selector:
    app: web_api
  ports:
    - protocol: TCP
      port: 10001
      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:

apiVersion: v1
kind: Service
metadata:
  name: web-api
  namespace: my-system
spec:
  selector:
    app: web-api
  ports:
    - protocol: TCP
      port: 10001
      targetPort: 10001

字符串

2.设置Ingress Controller

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

3.创建Ingress资源

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-api-ingress
  namespace: my-system
spec:
  rules:
  - host: "web_api.my-domain.com"
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-api
            port:
              number: 10001


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

相关问题