使用kops启用Kubernetes PodPresets

ash*_*hic 5 kubernetes kops

我有一个kubernetes集群,其中设置了kops 1.5,然后升级到1.6.2.我正在尝试使用PodPresets.文档声明了以下要求:

  1. 您已启用api类型settings.k8s.io/v1alpha1/podpreset
  2. 您已启用准入控制器PodPreset
  3. 您已定义了pod预设

我看到1.6.x,第一个是照顾(我怎么验证?).我怎么能申请第二个?我可以看到群集中有三个kube-apiserver-*pod(我想它是3个az).我想我可以从kubernetes仪表板编辑他们的yaml配置,并将PodPreset添加到permit-control字符串中.但有没有更好的方法来实现这一目标?

Ant*_*ten 4

您可以使用api-versionskubectl命令列出当前在群集中启用的API组,或者通过向/apis您的端点发送GET请求kube-apiserver:

$ curl localhost:8080/apis
{
  "paths": [
  "/api",
  "/api/v1",
  "...",
  "/apis/settings.k8s.io",
  "/apis/settings.k8s.io/v1alpha1",
  "...",
}
Run Code Online (Sandbox Code Playgroud)

注意:settings.k8s.io/v1alpha1默认情况下,在Kubernetes v1.6和v1.7上启用API,但在v1.8中默认禁用.

您可以使用kops ClusterSpec在群集配置期间自定义Kubernetes组件的配置,包括API服务器.

这在文档页面上使用Manifest来管理kops Clusters进行了描述,KopsAPIServerConfig类型的完整规范在kops GoDoc中提供.

例:

apiVersion: kops/v1
kind: Cluster
metadata:
  name: k8s.example.com
spec:
  kubeAPIServer:
    AdmissionControl:
      - NamespaceLifecycle
      - LimitRanger
      - PodPreset
Run Code Online (Sandbox Code Playgroud)

要更新现有群集,请执行以下步骤:

  1. 获取完整的群集配置

    kops get cluster name --full
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从中复制kubeAPIServer规范块.

  3. 不要推回完整配置.而是使用编辑群集配置

    kops edit cluster name
    
    Run Code Online (Sandbox Code Playgroud)
  4. 粘贴kubeAPIServer规范块,添加缺少的位,然后保存.

  5. 使用更新群集资源

    kops update cluster nane
    
    Run Code Online (Sandbox Code Playgroud)
  6. 执行滚动更新以应用更改:

    kops rolling-update name
    
    Run Code Online (Sandbox Code Playgroud)