Невозможно применить Сервис как "type: ClusterIP" в моем кластере GKE. - PullRequest
1 голос
/ 04 ноября 2019

Я хочу развернуть свой сервис как ClusterIP, но не могу применить его для данного сообщения об ошибке:

[xetra11@x11-work coopr-infrastructure]$ kubectl apply -f teamcity-deployment.yaml 
deployment.apps/teamcity unchanged
ingress.extensions/teamcity unchanged
The Service "teamcity" is invalid: spec.ports[0].nodePort: Forbidden: may not be used when `type` is 'ClusterIP'

Это мой файл .yaml:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: teamcity
  labels:
    app: teamcity
spec:
  replicas: 1
  selector:
    matchLabels:
      app: teamcity
  template:
    metadata:
      labels:
        app: teamcity
    spec:
      containers:
      - name: teamcity-server
        image: jetbrains/teamcity-server:latest
        ports:
        - containerPort: 8111
---
apiVersion: v1
kind: Service
metadata:
  name: teamcity
  labels:
    app: teamcity
spec:
  type: ClusterIP
  ports:
  - port: 8111
    targetPort: 8111
    protocol: TCP
  selector:
    app: teamcity
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: teamcity
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  backend:
    serviceName: teamcity
    servicePort: 8111

Ответы [ 3 ]

0 голосов
/ 05 ноября 2019

Применение конфигурации к ресурсу по имени файла:

kubectl apply -f [.yaml file] --force

Этот ресурс будет создан, если он еще не существует. Чтобы использовать 'apply', всегда сначала создавайте ресурс с помощью 'apply' или 'create --save-config'.

2) Если первый не удастся, вы можете принудительно заменить, удалить, а затем повторносоздать ресурс:

kubectl replace -f grav-deployment.yml

Эта команда используется, только если период отсрочки = 0. Если значение равно true, немедленно удалите ресурсы из API и пропустите постепенное удаление. Обратите внимание, что немедленное удаление некоторых ресурсов может привести к несогласованности или потере данных и требует подтверждения.

0 голосов
/ 05 ноября 2019

Вы только что недавно изменили описание услуги с NodePort на ClusterIP?

Тогда это может быть проблема github.com / kubernetes / kubectl / Issues / 221 .

Вам необходимо использовать kubectl replace или kubectl apply --force.

0 голосов
/ 04 ноября 2019

В GKE вход может указывать только на сервис типа LoadBalancer или NodePort. Вы можете увидеть вывод ошибки входа, выполнив:

kubectl describe ingress teamcity

Вы можете увидеть ошибку, какза ваш yaml, если вы используете контроллер nginx, вы должны использовать сервис типа NodePort

Somo документация:

https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md#gce-gke

...