Kubernetes入口服务更新IP

时间:2019-07-10 14:11:52

标签: kubernetes nginx-ingress

我有一个在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)。

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

1 个答案:

答案 0 :(得分:0)

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获得所有服务。