【问题标题】:Kubernetes Ingress-Service update IPKubernetes Ingress-Service更新IP
【发布时间】:2019-07-10 14:11:52
【问题描述】:

我有一个在 Azure 上运行的 Kubernetes 集群。我使用 nginx-ingress 来处理传入的请求。为了设置入口,我使用了官方指南 https://kubernetes.github.io/ingress-nginx/deploy/#azure 。 我还创建了一个要用于 Ingress 的公共静态 IP。 不幸的是,我找不到入口服务(generic-deployment.yaml)。另外,我的入口是不可描述的。

我是如何安装 Ingress 的:

$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
...
deployment.apps/nginx-ingress-controller created

$ sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml
service/ingress-nginx created

另外,我通过 ingress.yaml 安装了一些路由配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path:
        backend:
          serviceName: app0-service
          servicePort: 80
      - path: /app1
        backend:
          serviceName: app1-service
          servicePort: 80


$sudo kubectl apply -f ingress.yaml
ingress.extensions/myingress created

什么让我困惑

很遗憾,我找不到我的 ingress-nginx 服务。

$ sudo kubectl get svc
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
app0-service   ClusterIP   10.0.28.3      <none>        80/TCP    3m48s
app1-service   ClusterIP   10.0.226.249   <none>        80/TCP    3m47s
kubernetes     ClusterIP   10.0.0.1       <none>        443/TCP   39m

但我的入口正在运行:

$ sudo kubectl get ingress
NAME        HOSTS   ADDRESS         PORTS   AGE
myingress   *       23.97.xxx.xxx   80      54m

在浏览器中 23.97.xxx.xxx 部分工作。

1)如果我代理一个域名到23.97.xxx.xxx,浏览器中的域名会被这个IP改写。

2) 如果我尝试直接浏览到子路由,例如 23.97.xxx.xxx/app1/page1。每次app1的主页面我都得到。

我希望从我的入口服务获得 IP。因为我想通过将 loadbalancerIP 添加到 cloud-generic.yaml 中的规范来更新此 IP 地址。 (比如https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/static-ip/static-ip-svc.yaml)。

我来自 ingress 的 IP 是否适合使用?为什么我找不到我的入口服务?

【问题讨论】:

    标签: kubernetes nginx-ingress


    【解决方案1】:

    查看https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud-generic.yaml 处的服务yaml,您可以看到它是在命名空间ingress-nginx 中创建的。

    你应该可以通过运行获得你的服务:

    kubectl get service -n ingress-nginx 
    

    您也可以通过运行kubectl get service --all-namespaces获取所有服务。

    【讨论】:

    • 感谢您的回答。你也知道为什么loadbalancerIP不使用外部IP吗?
    • 你能用上述命令的输出更新你的问题吗?另外,您是否将其部署在托管云上的裸机上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2021-11-03
    • 2018-09-25
    • 2017-10-02
    • 2021-07-09
    相关资源
    最近更新 更多