无法在我的 GKE 集群中应用服务即"type: ClusterIP"



我想将我的服务部署为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

按文件名将配置应用于资源:

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

如果此资源还不存在,则会创建它。若要使用"apply",请始终首先使用"application"或"create-save-config"创建资源。

2( 如果第一个失败,您可以强制替换、删除然后重新创建资源:

kubectl replace -f grav-deployment.yml

此命令仅在宽限期=0时使用。如果为true,请立即从API中删除资源并绕过优雅删除。请注意,立即删除某些资源可能会导致不一致或数据丢失,需要进行确认。

在GKE上,入口只能指向类型为LoadBalancerNodePort的服务。您可以通过运行以下命令查看入口的错误输出:

kubectl describe ingress teamcity

你可以看到一个错误,根据你的yaml,如果你使用的是nginx控制器,你必须使用类型为NodePort的服务

Somo文档:

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

您最近是否将服务描述从NodePort更改为ClusterIP

那么可能是这个问题github.com/kubernetes/kubectl/issues/221。

您需要使用kubectl replacekubectl apply --force

相关内容

  • 没有找到相关文章

最新更新