我有一个kubernetes集群,其中设置了1.5的kops,然后升级到1.6.2。我试图使用PodPresets。文档陈述了以下要求:
- 您已启用api类型settings.k8s.io/v1alpha1/podpreset
- 您已启用许可控制器PodPreset
- 您已定义了播客预设
醇>
我看到1.6.x的情况,第一个是照顾(我该如何验证?)。我怎么能申请第二个?我可以看到群集中有三个kube-apiserver- * pod(我想象它是3个az)。我想我可以从kubernetes仪表板编辑他们的yaml配置,并将PodPreset添加到permit-control字符串中。但有没有更好的方法来实现这一目标?
答案 0 :(得分:4)
您可以使用api-versions
kubectl命令列出群集中当前启用的API组,也可以向/apis
的{{1}}端点发送GET请求:< / p>
kube-apiserver
注意:Kubernetes v1.6和v1.7默认启用了
$ curl localhost:8080/apis { "paths": [ "/api", "/api/v1", "...", "/apis/settings.k8s.io", "/apis/settings.k8s.io/v1alpha1", "...", }
API,但disabled by default in v1.8。
您可以使用kops ClusterSpec在群集配置期间自定义Kubernetes组件的配置,包括API服务器。
文档页面Using A Manifest to Manage kops Clusters对此进行了描述,并提供了KubeAPIServerConfig类型的完整规范in the kops GoDoc。
示例:
settings.k8s.io/v1alpha1
要更新现有群集,请执行以下步骤:
使用
获取完整的群集配置apiVersion: kops/v1
kind: Cluster
metadata:
name: k8s.example.com
spec:
kubeAPIServer:
AdmissionControl:
- NamespaceLifecycle
- LimitRanger
- PodPreset
从中复制kubeAPIServer规范块。
不要推回完整配置。而是使用
编辑群集配置kops get cluster name --full
粘贴kubeAPIServer规范块,添加缺失的位并保存。
使用
更新群集资源kops edit cluster name
执行滚动更新以应用更改:
kops update cluster nane