如何使用yaml配置在minikube上创建服务,可以从主机访问?

时间:2017-09-15 18:28:51

标签: minikube

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用以下配置:

---
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