【问题标题】:kubernetes cluster mode, what is ingress url?kubernetes集群模式,什么是入口url?
【发布时间】:2018-12-11 06:05:09
【问题描述】:

在我有一个单独的 vm(centos 7.4,主机名 kube-2.novalocal,ip 172.50.10.10)之前,我在其中安装了 master 和 kubelet,我可以通过 172.50.10.10/uaa/login 访问我的入口。在集群内部,我使用 ClusterIP,并将 ingress nginx 部署为 ingress 上的 NodePort。由于它是重定向/重写,所以我通过避免省略端口将 nodeport 更改为 80。服务网址是http://172.50.10.10/uaa/login。而且效果很好。

现在我添加了两个节点(kube-1.novalocal/172.50.10.1 和 kube-3.novalocal/172.50.10.4)。我可以看到 ingress 是由 kubernetes 在 kube-3.novalocal 上部署的。而且它经常重启,几乎每分钟都会重启。而且我也不知道入口服务网址。是http://kube-2.novalocal/uaa/login or http://kube-3.novalocal/uaa/login?为什么重启这么频繁?

我把所有相关的yaml文件、日志文件、控制台命令输出和仪表盘信息都放在这里了。

[centos@kube-2 ingress]$ sudo kubectl get po
NAME                                     READY     STATUS    RESTARTS   AGE
gearbox-rack-api-gateway                 1/1       Running   0          15h
gearbox-rack-config-server               1/1       Running   0          15h
gearbox-rack-eureka-server               1/1       Running   0          15h
gearbox-rack-rabbitmq                    1/1       Running   0          15h
gearbox-rack-redis                       1/1       Running   0          15h
gearbox-rack-uaa-service                 1/1       Running   0          15h
gearbox-rack-zipkin-server               1/1       Running   0          15h
ingress-nginx-5c6d78668c-brlsv           1/1       Running   279        15h
nginx-default-backend-6647766887-nbwhl   1/1       Running   0          15h

在 kube-3.novalocal(172.50.10.4) 中访问入口 url:

[centos@kube-2 ingress]$ curl http://172.50.10.4/uaa/login
curl: (7) Failed connect to 172.50.10.4:80; Connection refused

ingress-nginx 日志:

[centos@kube-2 ingress]$ sudo kubectl logs ingress-nginx-5c6d78668c-frb2r
-------------------------------------------------------------------------------
NGINX Ingress controller
  Release:    0.15.0
  Build:      git-df61bd7
  Repository: https://github.com/kubernetes/ingress-nginx
-------------------------------------------------------------------------------
W0703 02:16:35.966965       7 client_config.go:533] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0703 02:16:35.967483       7 main.go:158] Creating API client for https://10.96.0.1:443

仪表板图片如下:

ingress-nginx-res.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
   - host:
     http:
       paths:
       - path: /
         backend:
           serviceName: gearbox-rack-api-gateway
           servicePort: 5555

ingress-nginx-ctl.yaml

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
spec:
  type: NodePort
  selector:
    app: ingress-nginx
  ports:
  - name: http
    port: 80
    nodePort: 80
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: ingress-nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: ingress-nginx
    spec:
      terminationGracePeriodSeconds: 60
      serviceAccount: lb
      containers:
      - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.15.0
        name: ingress-nginx
        imagePullPolicy: Always
        ports:
          - name: http
            containerPort: 80
            protocol: TCP
          - name: https
            containerPort: 443
            protocol: TCP
        livenessProbe:
          httpGet:
            path: /healthz
            port: 10254
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
        args:
        - /nginx-ingress-controller
        - --default-backend-service=$(POD_NAMESPACE)/nginx-default-backend 

kubeadm.yaml

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
apiServerExtraArgs:
  service-node-port-range: 80-32767
networking:
  podSubnet: 192.168.0.0/16
kubernetesVersion: v1.10.3
featureGates:
  CoreDNS: true

================================================ ==

第二版

Ingress-nginx 控制器更新到 0.16.2,部署和之前一样,ingress-nginx 几乎每两分钟重启一次。

NAME                                     READY     STATUS           RESTARTS  AGE
ingress-nginx-59b74f9684-lgm2k           0/1       CrashLoopBackOff   9          20m       192.168.179.5   kube-3.novalocal

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    根本原因可能是部署硬件环境。使用我的 virtualbox,无需重启。当我使用基于openstack的公司vm时,ingress-nginx控制器总是重启。

    【讨论】:

      【解决方案2】:

      NodePort 的使用假设您能够访问所有 pod,因此您应该能够同时使用 http://kube-2.novalocal/uaa/loginhttp://kube-3.novalocal/uaa/login

      您可以在此处找到有关 NodePort 的更多信息:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types “NodePort:在静态端口(NodePort)上公开每个节点 IP 上的服务。自动创建 NodePort 服务将路由到的 ClusterIP 服务。您可以通过以下请求从集群外部联系 NodePort 服务: 。”

      关于您的 ingress-nginx 频繁重启:尝试将您的 nginx 控制器升级到最新版本并返回结果。你可以在这里找到它:https://github.com/kubernetes/ingress-nginx

      另外,看看这篇有类似问题的文章:https://github.com/kubernetes/ingress-nginx/issues/2450

      【讨论】:

      • 感谢您的帮助。我将 ingress-nginx-controller 更新为 0.16.2,但得到相同的结果。 Ingress-nginx 频繁重启。请在我的第二版中查看详细信息。
      • 关于url部分的答案是对的。但根本原因是我的端口范围没有在每个节点中配置。
      • 根本原因是我的硬件环境。请查看我对自己问题的回答。
      • 很高兴您找到了根本原因
      猜你喜欢
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多