Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 使用入口资源中的主机名/子域从外部访问应用程序_Kubernetes_Kubernetes Ingress_Nginx Ingress_Kube Dns - Fatal编程技术网

Kubernetes 使用入口资源中的主机名/子域从外部访问应用程序

Kubernetes 使用入口资源中的主机名/子域从外部访问应用程序,kubernetes,kubernetes-ingress,nginx-ingress,kube-dns,Kubernetes,Kubernetes Ingress,Nginx Ingress,Kube Dns,需要使用以下代码中指定的应用程序的入口主机名/子域从外部访问应用程序例如test-app.dev-cluster-poc.company.domain cat app-ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: namespace: ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / name: app-

需要使用以下代码中指定的应用程序的入口主机名/子域从外部访问应用程序例如test-app.dev-cluster-poc.company.domain

cat app-ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: app-ingress
spec:
  rules:
  - host: test-app.dev-cluster-poc.company.domain
    http:
      paths:
      - backend:
          serviceName: appsvc1
          servicePort: 80
        path: /app1
      - backend:
          serviceName: appsvc2
          servicePort: 80
        path: /app2
在使用中的步骤进行故障排除时,我发现“kubectl get ingress”输出中没有地址。需要如下所示的ip地址

cat nginx-ingress-controller-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: ingress
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30000
      name: http
    - port: 18080
      nodePort: 32000
      name: http-mgmt
  selector:
    app: nginx-ingress-lb

但是,我在下面看到,第三列是空的。

外部访问应用程序需要什么样的必要配置,如注册主机名(test app.dev cluster poc.company.domain)或在kubernetes集群中添加A记录或运行任何dns服务

是什么导致“kubectl get ingress”命令中的地址列为空

[编辑]

apiVersion: v1
kind: Service
metadata:
  name: appsvc1
  namespace: ingress
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: app1
Nginx控制器服务如下

cat nginx-ingress-controller-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: ingress
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30000
      name: http
    - port: 18080
      nodePort: 32000
      name: http-mgmt
  selector:
    app: nginx-ingress-lb

您的集群在哪里运行?答案因云而异provider@paltaa-它在VMware pks中运行。我可以添加dns名称,但我想知道需要什么其他配置才能从端到端工作。还有,为什么没有我的入口地址,有什么线索吗?我想这取决于您的服务
appsvc1
appsvc2
被定义为什么类型的
serviceType
。如果它们被定义为
LoadBalancer
,并且您的提供商可以提供额外的IP地址,则应使用该IP填充地址字段(即每个入口都有一个唯一的IP)。如果它们被定义为
ClusterIP
NodePort
ADDRESS
字段将为空,并且将使用kube代理IP。虽然我可能错了……正如community id所提到的,这取决于云提供商的实现,您提到您正在使用VMware pks,也许应该在创建集群期间配置loadbalancer。您可以使用命令
kubectl description ingres..
从入口资源查看更多信息
kubectl get svc
类型loadbalanacery您的服务需要为LoadBalancer或NodePort类型,否则,无法从集群外部访问它们,因此无法进行路由。尝试将其更改为LoadBalancer。