Создание службы Nodeport

Делаю:
14.11.2021


Nodeport используют в разработке. В остальных случаях, рекомендуют использовать LoadBalancer.


Запуск minikube

Как здесь


$ cat << 'EOF' | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-cats-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nodejs-cats-app
  template:
    metadata:
      labels:
        app: nodejs-cats-app
        env: dev
    spec:
      containers:
      - name: nodejs-cats-app
        image: webmakaka/cats-app
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
EOF


$ cat << 'EOF' | kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
  name: nodejs-cats-app-nodeport
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 30123
  selector:
    app: nodejs-cats-app
EOF


port: 80 - Внутренний порт для для коммуникаций между контейнерами (Надеюсь я ничего не перепутал!).
targetPort: 8080 - порт на котором работает приложение внутри pod.
nodePort: 30123 - то к какому порту обращаться на этот под.


$ kubectl get pods
NAME                              READY   STATUS    RESTARTS   AGE
nodejs-cats-app-56cc7754f-8kbrq   1/1     Running   0          3m22s
nodejs-cats-app-56cc7754f-vnlrl   1/1     Running   0          3m22s
nodejs-cats-app-56cc7754f-z26sm   1/1     Running   0          3m22s


$ kubectl get svc
NAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes                 ClusterIP   10.96.0.1        <none>        443/TCP        10m
nodejs-cats-app-nodeport   NodePort    10.109.225.154   <none>        80:30123/TCP   3m3s


// Если не используется профиль, удалить
// Если не используется namespace, таке можно убрать -n default
$ echo $(minikube --profile ${PROFILE} service nodejs-cats-app-nodeport -n default --url)


http://192.168.49.2:30123


При обращении по адресу запустилось приложение.


UPD по поводу порт 80 в Service

$ kubectl exec -it nodejs-cats-app-56cc7754f-8kbrq -- sh


# apk add curl


# curl nodejs-cats-app-nodeport:80


Возвращает страницу


# apk add curl


Удалить созданное


// Если понадобится удалить
$ kubectl delete svc nodejs-cats-app-nodeport
$ kubectl delete deployment nodejs-cats-app