如何为本地Kubernetes集群中的应用程序分配DNS名称?

我有一个基于MicroK8s的本地Kubernetes集群,该集群在Ubuntu 18.04计算机上运行。

我要实现的目标:通常,我希望将应用程序公开给DNS名称,并在本地对其进行测试。

我的设置:

我创建了以下测试部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-app
  labels:
    app: hello-app
    tier: backend
    version: v1
spec:
  selector:
    matchLabels:
      app: hello-app
  replicas: 2
  template:
    metadata:
      labels:
        app: hello-app
    spec:
      containers:
      - name: hello-app
        image: localhost:5000/a-local-hello-image
        ports:
        - containerPort: 3000

我添加了以下服务描述符:

apiVersion: v1
kind: Service
metadata:
  name: hello-app
spec:
  selector:
    app: hello-app
  ports:
    - protocol: TCP
      port: 3000
      targetPort: 3000

现在,我想在http://hello.someurl.com:3000看到我的应用可用。

问题:除了当前的配置之外,我还需要设置什么才能将应用程序本地映射到DNS名称?

注意:不幸的是,我读过the documentation并没有帮助。我也enabled DNS addon在我的集群上。

我将对您的帮助,前进方向的任何指导表示感谢。

haha004 回答:如何为本地Kubernetes集群中的应用程序分配DNS名称?

使用简单的方法来实现所需的目标

kubectl port-forward service/hello-app 3000:3000

并将以下条目附加到/etc/hosts文件

127.0.0.1 hello.someurl.com

然后,您只需打开浏览器并转到http://hello.someurl.com:3000

,

您可以创建一个Ingress资源,如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  tls:
  - secretName: tls 
  rules:
  - host: site1.domain.com
    http:
      paths:
      - path: /path1/
        backend:
          serviceName: service1
          servicePort: 80
      - path: /path2/
        backend:
          serviceName: service2
          servicePort: 8080
      - path: /
        backend:
          serviceName: service3
          servicePort: 80
  - host: site2.domain.com
    http:
      paths:
      - backend:
          serviceName: service1
          servicePort: 80

要使其正常工作,您需要一个Ingress控制器,例如Nginx,Traefik等。

一旦有了Ingress Controller(如果尚未安装)并创建了Ingress资源(上述yaml),就可以根据主机和所需服务的路径转发请求。例如,如果我想将流量发送到service2,我会这样做:

curl -H "site1.domain.com/path2/" INGRESS_IP:INGRESS_PORT。该请求将通过入口控制器,并将数据包传递到service2。如果您自己修改服务名称和端口,它应该可以正常工作。

您当然也可以将其放在/etc/hosts中。

您可以在1个入口资源中设置任意数量的域和路径。

本文链接:https://www.f2er.com/3125102.html

大家都在问