У меня есть docker-compose.yml
и Docker для рабочего стола Windows с локальным кластером kubernetes (контекст по умолчанию docker -desktop):
version: '3'
services:
web:
image: customnode
ports:
- "3000:3000"
labels:
kompose.service.type: nodeport
datastore:
image: custommongo
ports:
- "27017:27017"
docker-compose up -d
отлично работает и выставляет мой NodeJS на порт 3000
на 127.0.0.1
.
Я пытаюсь перенести этот кластер на мой k8s, поэтому следую https://kompose.io/getting-started/
На странице выше написано: «Если у вас еще нет запущенного кластера Kubernetes, миникубе - лучший способ начать работу» ... Я уже использую кластер OOTB Docker для настольных компьютеров, поэтому я предполагаю, что мне не нужен миникуб.
kompose convert
INFO Kubernetes file "datastore-service.yaml" created
INFO Kubernetes file "web-service.yaml" created
INFO Kubernetes file "datastore-deployment.yaml" created
INFO Kubernetes file "web-deployment.yaml" created
Вот веб-развертывание и веб-сервис YAMLS:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.service.type: nodeport
kompose.version: 1.16.0 (0c01309)
creationTimestamp: null
labels:
io.kompose.service: web
name: web
spec:
replicas: 1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: web
spec:
containers:
image: customnode
name: web
ports:
- containerPort: 3000
resources: {}
restartPolicy: Always
status: {}
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.service.type: nodeport
kompose.version: 1.16.0 (0c01309)
creationTimestamp: null
labels:
io.kompose.service: web
name: web
spec:
ports:
- name: "3000"
port: 3000
targetPort: 3000
selector:
io.kompose.service: web
type: NodePort
status:
loadBalancer: {}
Наконец, работает kompose up
:
kompose up
[36mINFO[0m We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application. If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead.
INFO Deploying application in "default" namespace
INFO Successfully created Service: datastore
INFO Successfully created Service: web
INFO Successfully created Deployment: datastore
INFO Successfully created Deployment: web
Вывод kubectl get svc
:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
datastore ClusterIP 10.103.***.*** <none> 27017/TCP 76s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
web NodePort 10.106.***.*** <none> 3000:32033/TCP 76s
Как видите, нет внешнего IP, как я ожидал. Я уверен, что это недостаток знаний с моей стороны, а не ошибка, так что мне не хватает?