kubernetes - 尽管使用了最新的 kubectl 客户端,但未知字段“setHostnameAsFQDN”
问题描述
我有一个如下所示的部署 yaml 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes
spec:
replicas: 1
selector:
matchLabels:
app: hello-kubernetes
template:
metadata:
labels:
app: hello-kubernetes
spec:
setHostnameAsFQDN: true
hostname: hello
subdomain: world
containers:
- name: hello-kubernetes
image: redis
但是,我收到此错误:
$ kubectl apply -f dep.yaml
error: error validating "dep.yaml": error validating data: ValidationError(Deployment.spec.template.spec): unknown field "setHostnameAsFQDN" in io.k8s.api.core.v1.PodSpec; if you choose to ignore these errors, turn validation off with --validate=false
我的 kubectl 版本:
$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
指定后,--validate=falsee
仍然返回不同的值。hostname
hostname -f
我相信我误解了一些东西。Doc 说这setHostnameAsFQDN
将从 kubernetes v1.20 开始提供
解决方案
你展示了kubectl
版本。您的 kubernetes 版本也需要是 v1.20。确保您使用的是 Kubernetes 版本 v1.20。
用于kubectl version
查看客户端和服务器版本。其中客户端版本是指kubectl
版本,服务器版本是指kubernetes
版本。
就 k8s v1.20 发行说明文档而言:之前在 1.19 中引入的功能门后面,SetHostnameAsFQDN
现在默认启用。有关此行为的更多详细信息,请参阅服务和 Pod 的 DNS 文档
推荐阅读
- php - 如何修复 iOS 无线企业应用程序安装不显示应用程序图标
- java - 可由它创建的实例访问的实例
- react-native - 可能未处理的承诺拒绝(id 0)类型错误 this.setstate 不是函数
- java - 如何使用mybatis接口而不是sqlSession处理地图结果(两列结果)
- c# - Botframework v4:无法渲染卡片
- python - 粘性命令如何影响 Tkinter 中的 python 代码?
- java - JFreeChart 不起作用并阻止我的代码
- php - 如何获取当前经过身份验证的用户?
- function - 理解重载加函数
- app-inventor - 如何让安卓程序等待用户输入?