2017-07-02 58 views
3

我有一個kubernetes羣集,使用1.5的kops設置,然後升級到1.6.2。我正在嘗試使用PodPresets。該文檔說明了以下要求:使用kops啓用Kubernetes PodPresets

  1. 您已啓用API類型settings.k8s.io/v1alpha1/podpreset
  2. 已啓用准入控制器PodPreset
  3. 你定義了你莢預設

我看到,對於1.6.x版,第一個是照顧(我怎麼能確認?)。我如何申請第二個?我可以看到集羣中運行了三個kube-apiserver- * pod(我想它是針對3個az)。我想我可以從kubernetes儀表板編輯他們的yaml配置,並將PodPreset添加到准入控制字符串中。但是有沒有更好的方法來實現這一目標?

回答

4

您可以列出這是目前在集羣中啓用API組或者與api-versions kubectl命令,或通過發送GET請求/apis端點您kube-apiserver的:

$ curl localhost:8080/apis 
{ 
    "paths": [ 
    "/api", 
    "/api/v1", 
    "...", 
    "/apis/settings.k8s.io", 
    "/apis/settings.k8s.io/v1alpha1", 
    "...", 
} 

注意:在Kubernetes v1.6和v1.7上默認啓用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

實施例:

apiVersion: kops/v1 
kind: Cluster 
metadata: 
    name: k8s.example.com 
spec: 
    kubeAPIServer: 
    AdmissionControl: 
     - NamespaceLifecycle 
     - LimitRanger 
     - PodPreset 

要更新現有的簇,執行以下步驟:

  1. 獲取與

    kops get cluster name --full 
    
  2. 複製kubeAPIServer規範塊完整的羣集配置從中。

  3. 不要推回完整配置。相反,編輯集羣配置與

    kops edit cluster name 
    
  4. 粘貼kubeAPIServer規範塊,添加缺少的位,並保存。

  5. 更新與

    kops update cluster nane 
    
  6. 羣集資源執行滾動更新應用更改:

    kops rolling-update name 
    
+0

感謝。我只做了一個kops編輯羣集。該規範目前沒有針對kubeAPIServer的部分。用AdmissionControl.PodPreset添加一個安全嗎,還是應該顯式指定AdmissionControl在PodPreset中添加的所有當前設置?一旦添加,我想象一個kops更新羣集>滾動更新應該工作? – ashic

+0

'kops的輸出是否獲得集羣$ NAME - 完整-o yaml'是否包含spec.kubeAPIServer?如果是的話,你可以在本地保存一份副本,更新它並執行'kops rolling-update'。 –

+0

顯示我: kubeAPIServer: 地址:127.0.0.1 admissionControl: - NamespaceLifecycle - LimitRanger - ServiceAccount - PersistentVolumeLabel - DefaultStorageClass - DefaultTolerationSeconds - ResourceQuota 如果我在本地保存副本,並對其進行編輯,我如何將它應用到集羣? kops更新羣集不顯示這些選項。 – ashic