【问题标题】:installing nginx-ingress on Kubernetes to run on localhost MacOs - Docker for Mac(Edge)在 Kubernetes 上安装 nginx-ingress 以在 localhost MacOs 上运行 - Docker for Mac(Edge)
【发布时间】:2018-06-27 12:11:07
【问题描述】:

更新:

我让 NodePort 工作:kubectl get services

NAME                                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
kubernetes                                 ClusterIP   10.96.0.1       <none>        443/TCP                      7d
my-release-nginx-ingress-controller        NodePort    10.105.64.135   <none>        80:32706/TCP,443:32253/TCP   10m
my-release-nginx-ingress-default-backend   ClusterIP   10.98.230.24    <none>        80/TCP                       10m

那么我要进行端口转发吗?

在 Docker for Mac 上使用 Helm 安装 Ingress(Edge with Kubernetes)

https://github.com/kubernetes/charts/tree/master/stable/nginx-ingress

这可以在 localhost 上工作吗?如果可以,如何访问服务?

步骤:

  1. helm install stable/nginx-ingress

输出:

NAME:   washing-jackal
LAST DEPLOYED: Thu Jan 18 12:57:40 2018
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME                                     DATA  AGE
washing-jackal-nginx-ingress-controller  1     1s

==> v1/Service
NAME                                          TYPE          CLUSTER-IP     EXTERNAL-IP  PORT(S)                     AGE
washing-jackal-nginx-ingress-controller       LoadBalancer  10.105.122.1   <pending>    80:31494/TCP,443:32136/TCP  1s
washing-jackal-nginx-ingress-default-backend  ClusterIP     10.103.189.14  <none>       80/TCP                      1s

==> v1beta1/Deployment
NAME                                          DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
washing-jackal-nginx-ingress-controller       1        1        1           0          0s
washing-jackal-nginx-ingress-default-backend  1        1        1           0          0s

==> v1/Pod(related)
NAME                                                           READY  STATUS             RESTARTS  AGE
washing-jackal-nginx-ingress-controller-5b4d86c948-xxlrt       0/1    ContainerCreating  0         0s
washing-jackal-nginx-ingress-default-backend-57947f94c6-h4sz6  0/1    ContainerCreating  0         0s


NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace default get services -o wide -w washing-jackal-nginx-ingress-controller'

An example Ingress that makes use of the controller:

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
      - host: www.example.com
        http:
          paths:
            - backend:
                serviceName: exampleService
                servicePort: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls

If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:

  apiVersion: v1
  kind: Secret
  metadata:
    name: example-tls
    namespace: foo
  data:
    tls.crt: <base64 encoded cert>
    tls.key: <base64 encoded key>
  type: kubernetes.io/tls

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    据我从您发布的输出中可以看出,一切都应该在您的本地 kubernetes 集群中顺利运行。

    但是,您的入口控制器使用 LoadBalancer Service 公开,从您发布的以下输出部分可以看出:

    ==> v1/Service
    NAME                                          TYPE          CLUSTER-IP     EXTERNAL-IP  PORT(S)                     AGE
    washing-jackal-nginx-ingress-controller       LoadBalancer  10.105.122.1   <pending>    80:31494/TCP,443:32136/TCP  1s 
    

    LoadBalancer 类型的服务需要底层基础架构的支持,并且无法在您的本地环境中运行。

    但是,LoadBalancer 服务也是NodePort 服务。实际上,您可以在上面的输出 sn-p 中看到您的入口控制器正在侦听以下端口:

    80:31494/TCP,443:32136/TCP
    

    这意味着您应该能够通过节点 IP 地址的端口 31494 和 32136 访问入口控制器。

    您可以让入口控制器侦听更多标准端口,例如 80 和 443,但您可能必须手动编辑 helm chart 创建的资源才能这样做。

    【讨论】:

    • 谢谢,我已经更新了这个问题 - 你让我找到了正确的方向,但我错过了一些?
    【解决方案2】:

    要查看应用程序的运行情况,如果您在 minikube 上,您需要转到 localhost:port 以查看您的服务。或者,如果您在网络中的另一台计算机上,则使用您的计算机名称而不是 localhost。如果您使用的是虚拟机,请在浏览器中使用节点的虚拟机 IP 而不是 localhost。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      相关资源
      最近更新 更多