如何正确编写具有一个要求的docker上具有驱动程序的minikube集群中kubernetes pod和服务的yaml配置:必须可从主机访问80端口容器。使用nodePort的解决方案无法正常工作:
type: NodePort
ports:
- port: 80
targetPort: 8006
selector:
app: blogapp
标签应用:在容器上设置blogapp。您是否可以显示nginx映像的正确配置,例如可以从主机访问端口。
答案 0 :(得分:1)
您应该创建一个Kubernetes deployment,而不是创建NodePort
。创建部署(也将自动创建ReplicaSet和Pod)后,您可以expose
它。默认情况下,blogapp
将无法向外界使用,因此如果您希望能够从群集外部访问它,则必须公开它。
公开部署也会自动创建service
。
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
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
。