Je souhaite déployer mon service en tant que ClusterIP mais je ne suis pas en mesure de l'appliquer pour le message d'erreur donné:

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

Voici mon fichier .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
1
xetra11 4 nov. 2019 à 10:51

3 réponses

Appliquez une configuration à la ressource par nom de fichier:

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

Cette ressource sera créée si elle n'existe pas encore. Pour utiliser «appliquer», créez toujours la ressource initialement avec «appliquer» ou «créer - enregistrer-config».

2) Si le premier échoue, vous pouvez forcer le remplacement, la suppression, puis recréer la ressource:

kubectl replace -f grav-deployment.yml

Cette commande n'est utilisée que lorsque grace-period = 0. Si vrai, supprimez immédiatement les ressources de l'API et contournez la suppression gracieuse. Notez que la suppression immédiate de certaines ressources peut entraîner une incohérence ou une perte de données et nécessite une confirmation.

0
Md Daud Walizarif 5 nov. 2019 à 13:07

Sur GKE, l'entrée ne peut pointer que vers un service de type LoadBalancer ou NodePort, vous pouvez voir la sortie d'erreur de l'entrée en exécutant:

kubectl describe ingress teamcity

Vous pouvez voir une erreur, selon votre yaml si vous utilisez un contrôleur nginx vous devez utiliser le service de type NodePort

Documentation 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

0
wolmi 4 nov. 2019 à 08:25

Vous venez de changer la description du service de NodePort à ClusterIP?

Ensuite, il pourrait s'agir de ce problème github.com/kubernetes/kubectl/issues/221.

Vous devez utiliser kubectl replace ou kubectl apply --force.

0
yvesonline 5 nov. 2019 à 20:03