【问题标题】:How create service on minikube with yaml configuration,which accessible from host?如何使用 yaml 配置在 minikube 上创建服务,可从主机访问?
【发布时间】:2017-09-15 18:28:51
【问题描述】:

如何正确地为 minikube 集群中的 kubernetes pod 和服务编写 yaml 配置,并在 docker 上使用驱动程序,但有一个要求:必须从主机访问容器的 80 端口。使用 nodePort 的解决方案无法按预期工作:

 type: NodePort 
 ports:
  - port: 80
    targetPort: 8006
  selector:
    app: blogapp

标签应用:在容器上设置的 blogapp。您能否显示 nginx 映像的正确配置,例如可从主机访问的端口。

【问题讨论】:

    标签: minikube


    【解决方案1】:

    您应该创建一个 Kubernetes deployment,而不是创建一个 NodePort。一旦你创建了部署(它也会自动创建一个 ReplicaSet 和 Pod),你可以expose它。默认情况下,blogapp 对外部世界不可用,因此如果您希望能够从集群外部访问它,则必须将其公开。

    公开部署也会自动创建一个service

    deployment.yml

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: blogapp
      labels:
        app: blogapp
    spec:
      replicas: 1
      strategy: {}
      template:
        metadata:
          labels:
            app: blogapp
        spec:
          containers:
          - image: <YOUR_NGINX_IMAGE>
            name: blogapp
            ports:
            - containerPort: 8006
            resources: {}
          restartPolicy: Always
    status: {}
    

    创建部署

    kubectl create -f deployment.yml

    公开部署

    kubectl expose deployment blogapp --name=blogapp --type=LoadBalancer --target-port=8006

    获取暴露的 URL

    minikube service blogapp --url

    【讨论】:

      【解决方案2】:

      您可以使用以下配置:

      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: blog-app-server-instance
        labels:
          app: blog-app
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: blog-app
        template:
          metadata:
            labels:
              app: blog-app
          spec:
            containers:
            - name: blog-app-server-instance
              image: blog-app-server
              ports:
              - containerPort: 8006
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: blog-app-service
        labels:
          app: blog-app
      spec:
        selector:
          app: blog-app
        type: NodePort
        ports:
        - port: 80
          nodePort: 31364
          targetPort: 8006
          protocol: TCP
          name: http
      

      我猜你错过了spec.ports[0].nodePort

      【讨论】:

        猜你喜欢
        • 2020-12-15
        • 1970-01-01
        • 2018-06-02
        • 2019-09-29
        • 2021-09-24
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多