我已经将一个服务部署到 kubernetes 集群中,它看起来像这样:
$ kubectl get svc my-service
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
my-service 192.168.202.23 <none> 8080/TCP name=my-service 38d
YAML 配置的规范部分如下所示:
"spec": {
"ports": [
{
"name": "http-port",
"protocol": "TCP",
"port": 8080,
"targetPort": 8080
}
],
"selector": {
"name": "my-service"
},
"clusterIP": "192.168.202.23",
"type": "ClusterIP",
"sessionAffinity": "None"
},
"status": {
"loadBalancer": {}
}
}
现在,我想公开此服务以便可以使用 LoadBalancer 从外部访问。使用 kubectl 公开服务会出现如下错误:
$ kubectl expose service my-service --type="LoadBalancer"
Error from server: services "my-service" already exists
是否无法“编辑”现有已部署的服务并使其可从外部访问?
最佳答案
您创建的服务类型是ClusterIP
,它在集群外部不可见。如果您编辑服务并将 type
字段更改为 NodePort
或 LoadBalancer
,它将公开它。
有关这些服务类型及其含义的文档位于: http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types
关于service - 通过 LoadBalancer 公开现有和已部署的 Kubernetes 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38965003/