Kubernetes 使用入口资源中的主机名/子域从外部访问应用程序
需要使用以下代码中指定的应用程序的入口主机名/子域从外部访问应用程序例如test-app.dev-cluster-poc.company.domain cat app-ingress.yamlKubernetes 使用入口资源中的主机名/子域从外部访问应用程序,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-
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。