如何在AKS NginX Ingress中公开服务

格拉泰利

我有一项服务,可在“开发”名称空间中公开“世界您好” Web部署。

YAML服务

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

为了测试页面是否正常运行,我运行“ kubectl port-forward”,并且使用公共IP成功显示了页面。

编辑:然后部署Ingress,但页面仅显示在vnet地址空间内

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: app
    version:  1.0.0
  name: dev-ingress
  namespace:  develop
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: hello-v1-svc
              servicePort: 80
            path: /

进入规则

Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /   hello-v1-svc:80 (10.1.1.13:8080,10.1.1.21:8080,10.1.1.49:8080)

我要跳过什么步骤才能显示页面?

维塔利

首先回答您的评论:

也许与此注释有关:“ service.beta.kubernetes.io/azure-load-balancer-internal”。控制器设置为“ True”

service.beta.kubernetes.io/azure-load-balancer-internal: "true"当您为内部虚拟网络创建入口控制器时,通常会使用注释。如果使用此注释,则将入口控制器配置在内部专用虚拟网络和IP地址上。不允许外部访问。您可以在Azure Kubernetes服务(AKS)中的为内部虚拟网络创建入口控制器中找到更多信息

复制您的案例,创建AKS集群并在yamls下应用。它可以正常工作,请使用

apiVersion: v1
kind: Namespace
metadata:
  name: develop
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world-deployment
  namespace: develop
  labels:
    app: hello-v1
spec:
  selector:
    matchLabels:
      app: hello-v1
  replicas: 2
  template:
    metadata:
      labels:
        app: hello-v1
    spec:
      containers:
      - name: hello-v1
        image: paulbouwer/hello-kubernetes:1.8
        ports:
        - containerPort: 8080
---
kind: Service
apiVersion: v1
metadata:
  name: hello-v1-svc
spec:
  type: ClusterIP
  selector:
    app: hello-v1
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-ingress
  namespace: develop
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: hello-v1-svc
              servicePort: 80
            path: /

我的服务清单

vitalii@Azure:~$ kubectl get svc -A
NAMESPACE       NAME                             TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)                      AGE
default         hello-v1-svc                     ClusterIP      10.0.20.206    <none>         80/TCP                       19m
default         kubernetes                       ClusterIP      10.0.0.1       <none>         443/TCP                      83m
ingress-basic   nginx-ingress-controller         LoadBalancer   10.0.222.156   *.*.*.*   80:32068/TCP,443:30907/TCP   53m
ingress-basic   nginx-ingress-default-backend    ClusterIP      10.0.193.198   <none>         80/TCP                       53m
kube-system     dashboard-metrics-scraper        ClusterIP      10.0.178.224   <none>         8000/TCP                     83m
kube-system     healthmodel-replicaset-service   ClusterIP      10.0.199.235   <none>         25227/TCP                    83m
kube-system     kube-dns                         ClusterIP      10.0.0.10      <none>         53/UDP,53/TCP                83m
kube-system     kubernetes-dashboard             ClusterIP      10.0.115.184   <none>         443/TCP                      83m
kube-system     metrics-server                   ClusterIP      10.0.199.200   <none>         443/TCP                      83m

出于安全考虑,我当然可以隐藏nginx-ingress-controller的EXTERNAL-IP。那就是您应该用来访问页面的IP。

更多信息和exampke你可以找到在创建Azure中Kubernetes服务入口控制器(AKS)文章

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Terraform中创建Nginx入口-Aks

如何在端口80/443的公共节点IP上公开kubernetes nginx-ingress服务?

Ingress Nginx中的TCP公开服务可用于SSL?

如何使用 Ingress 公开服务?

如何在Prometheus中公开Nginx指标?

如何在Nginx配置的上游块中公开服务器端口?

如何使用Nginx-ingress-controller Kubernetes公开localhost气流

如何使用Kubernetes中的NodePort服务在公共Ip上公开Nginx?

如何使用 Helm 在 Nginx Ingress 中设置服务器片段配置

如何在Kubernetes中编辑Nginx Ingress配置?

如何配置nginx在Jelastic上公开多个服务?

如何在Rest中公开服务?

如何在 Kubernetes 中公开服务?

从Kubernetes NGINX Ingress控制器公开服务始终返回502 Bad Gateway

使用Nginx反向代理在Kubernetes中公开服务

如何在 nginx 服务器中托管烧瓶(python)

使用带有Google登录插件的Ingress NGINX Controller在GKE中公开Jenkins

如何修改 Kubernetes NGINX Ingress 中的代理路径

如何使用适用于Windows的Docker桌面公开postgres tcp端口Kubernetes和Ingress-nginx

如何在Azure Kubenete Service AKS中删除Pod

如何在AKS中使用ACR中更新的docker映像

Nginx Ingress:找不到服务“ ingress-nginx-controller-admission”

如何在不停止容器的情况下重新启动 Docker nginx 映像中的 nginx 服务(`service nginx restart`)?

treafik 如何在 kubernetes 中公开跨命名空间服务

如何在Symfony 4中公开LoggerInterface服务

如何在Java中公开CXF Restful Web服务?

如何在Nginx中读取Cookie

如何在nginx中设置子域?

如何在Nginx中启用CORS