我正在尝试在OKE集群(Oracle Cloud Container Engine for Kubernetes)中创建负载均衡器。我正在对文件执行kubectl apply -f
,但它给了我这个错误。
服务"servicename"无效:metadata.labels:无效值:"其他代码1.vcn.oc1.iad.xx..xx":不能超过63个字符。
这是yaml文件
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
service.beta.kubernetes.io/oci-load-balancer-internal: "true"
service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.subnet.oc1..aaaaaa...xxxxx"
spec:
type: LoadBalancer
ports:
- port: 8100
selector:
app: nginx
我发现这个问题是因为service.beta.kubernetes.io/oci-load-balancer-subnet1:
的值超过了63个字符。但是我不能改变OCID的值。有解决这个问题的方法吗?
3条答案
按热度按时间twh00eeo1#
据我所知,没有解决方案。Kubernetes中的对象名称(您的注解将创建一个具有给定名称的对象)应该符合DNS RFC,即主机名部分〈63个字符。
资料来源:
6ioyuze22#
metadata.labels
结构具有< 63
值长度限制,但metadata.annotations
结构没有此限制。请注意,k8s
使用metadata.annotation
来存储完整JSON,其中包含键(kubectl.kubernetes.io/last-applied-configuration
)处最后应用的配置,并且几乎总是超过63字节的限制。当我把
OCID
值放在label
值上时,我遇到了这个问题,但是当使用annotation
值时,不是。例如,这将不起作用:
但这是预期工作:
所以,如果你有这个问题,我建议你仔细检查,如果你真的使用正确的结构,因为你引用。
https://docs.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengcreatingloadbalancer.htm#Creating2
kjthegm63#
在注解内尝试如下: