Amazon web services Kubernetes:如何正确更改apiserver运行时设置
我正在使用Amazon web services Kubernetes:如何正确更改apiserver运行时设置,amazon-web-services,cron,kubernetes,Amazon Web Services,Cron,Kubernetes,我正在使用kubeaws在aws上运行一个Kubernetes集群,一切正常 现在,我意识到在我使用的版本(v1.7.10_coreos.0)中没有打开cron作业,而Kubernetes的文档仅说明以下内容: 对于集群(
kubeaws
在aws上运行一个Kubernetes集群,一切正常
现在,我意识到在我使用的版本(v1.7.10_coreos.0
)中没有打开cron作业,而Kubernetes的文档仅说明以下内容:
对于集群(<1.8)的早期版本,您需要通过向API服务器传递--runtime config=batch/v2alpha1=true来显式启用批处理/v2alpha1 API(有关更多信息,请参阅打开或关闭集群的API版本)
该文本中指向的文档仅说明以下内容(这是实际的完整文档):
在启动API服务器时,通过传递--runtime config=API/flag可以打开或关闭特定的API版本。例如:要关闭v1 API,请传递--runtime config=API/v1=false。运行时配置还支持2个特殊键:api/all和api/legacy,分别控制所有和遗留api。例如,要关闭除v1之外的所有API版本,请传递--runtime config=API/all=false,API/v1=true。就这些标志而言,遗留API是那些已明确弃用的API(例如v1beta3)
我未能找到有关如何更改正在运行的集群的配置的信息,当然,我不想尝试在api服务器上重新运行该命令
请注意,kube aws仍然使用hyperkube
,而不是kubeadm
。另外,/etc/kubernetes/manifests
-目录仅包含ssl
-目录
我要应用的设置是:--runtime config=batch/v2alpha1=true
最好使用kubectl
应用此设置并重新启动apiserver
的正确方法是什么
谢谢。batch/v2alpha1=true
在kube-aws
中默认设置。您可以发现,对于/etc/kubernetes/manifests
来说,它不仅是空的,而且是完全缺失的,这是非常非常不寻常的,因为在90%的情况下,apiserver是由kubelet
静态配置的,以摆脱需要工作的apiserver使用kubectl来对抗的鸡毛蒜皮的局面。您的安装程序可能正在使用systemd管理kubelet和apiserver,因此systemctl列出单元| grep-E'kube | apiserver'
,并查看是否显示任何有趣的内容。但是不管怎样,改变apiserver的命令行是我所知道的实现你所要求的唯一机制谢谢你的评论,Matthew!该命令的输出给我一个错误:无法获得D总线连接:未知错误-1
。我正在一个apiserver
pod上运行它。如果清单目录为空,添加它是否安全?我非常好奇如何更新配置,然后重新启动apiserver。我只是杀了豆荚吗?或者我可以使用kubectl
运行命令来重新启动apiserver吗?我正在一个apiserver吊舱上运行它啊,现在我知道发生了什么;很抱歉:您需要在这些apiserver的节点上执行该操作(以及对apiserver运行方式的所有其他更改)(同样,我希望这些节点是静态的);由于注释长度,我将在单独的注释中回答下半部分如何更新配置,然后重新启动apiserver假设(!)apiserver是由静态清单声明的,那么当磁盘上的文件发生更改时(在几秒钟的特定窗口内),我希望kubelet
注意到更改,杀死apiserver容器/Pod,并使用新的配置重新启动它——就像它通过来自apiserver本身的命令进行编程一样。如果您有多个主节点,那么您还必须在验证第一次更改是否达到预期效果后,更新其他节点上匹配的apiserver清单Hanks Matthew,非常感谢您的帮助!显然,我没有用alpha类型集测试它,这有点尴尬。我真的以为我做到了。但是,您现在提供的信息对我来说仍然非常有价值,因为我还没有找到相关文档。我在哪里可以找到静态清单?因为它不在/etc/kubernetes/manifests
中?请注意,我使用的是kube-aws
,它使用的是hyperkube
,而不是kubeadm
,用于部署。您完全正确。该死,我想知道我怎么没能考上。我确信我做到了。不管怎么说,这工作很有效:)谢谢!