Kubernetes Service创建报错解析:Selector字段格式错误问题
解决Kubernetes创建Service时的BadRequest错误:Selector值类型不匹配
错误含义解析
你遇到的这个BadRequest错误,本质是Kubernetes的Service选择器(selector)要求键值对的取值必须是字符串类型,但你的配置里出了个小细节问题:
看错误日志里的关键提示:v1.ServiceSpec.Selector: ReadString: expects " or n, but found t——这里的t是布尔值true的首字母,说明YAML解析器把你写的yes自动识别成了布尔值true,而不是字符串,这就不符合Kubernetes API对Selector的格式要求,所以服务端拒绝了这个请求。
为什么会这样?因为YAML语法里,yes、no、true、false这类关键词如果不加引号,会被默认解析为布尔值,而Kubernetes要求Selector的所有取值必须是字符串类型。
修复方案
只需要给selector里的yes加上双引号,强制让它被解析为字符串就行,修改后的配置如下:
apiVersion: v1 kind: Service metadata: name: redis spec: selector: redis-service: "yes" # 加双引号明确为字符串类型 ports: - protocol: TCP port: 6379 - protocol: TCP port: 26379 - protocol: TCP port: 16379
修改后再执行kubectl create -f redis.yaml,应该就能正常创建Service了。
内容的提问来源于stack exchange,提问作者Chris Stryczynski
相关产品推荐
相关产品推荐

