2016-05-31 76 views
1

我有一個複製使用一個祕密複製控制器。如何更新或重新創建(單獨)吊艙 - 無需停機 - 在祕密值更改時以最新祕密值進行更新?Kubernetes滾動更新的情況下,祕密更新

我當前的解決方法是增加複製控制器中複製副本的數量,刪除舊的窗格並將副本計數更改回其原始值。

是否有一個命令或標誌來誘導滾動更新保留相同的容器圖像和標籤?當我嘗試這樣做時,它會拒絕我嘗試以下消息:

error: Specified --image must be distinct from existing container image 

回答

2

幾個問題#9043#13488說明問題相當不錯,我懷疑滾動更新的方法將落空短期內(如在Kubernetes大多數東西),雖然不太可能爲1.3.0。更新ConfigMaps也適用同樣的問題。

Kubernetes會做滾動更新每當部署吊艙規範的任何改變(如通常image到一個新的版本),所以one suggested workaround是在部署莢規範來設置環境變量(如:RESTART_

然後,當您更新了secret/configmap時,會在部署中通過env值(通過kubectl applypatchedit),並且Kubernetes將啓動部署的滾動更新。

部署示例規格:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: test-nginx 
spec: 
    replicas: 2 
    template: 
    metadata: 
    spec: 
     containers: 
     - name: nginx 
     image: "nginx:stable" 
     ports: 
     - containerPort: 80 
     - mountPath: /etc/nginx/conf.d 
      name: config 
      readOnly: true 
     - mountPath: /etc/nginx/auth 
      name: tokens 
      readOnly: true 
     env: 
     - name: RESTART_ 
      value: "13" 
     volumes: 
     - name: config 
      configMap: 
      name: test-nginx-config 
     - name: tokens 
      secret: 
      secretName: test-nginx-tokens 

兩個小技巧:

  • 環境變量名稱不能以_啓動,或者奇蹟般地消失不知何故。
  • ,如果你使用一些你重啓變量,你需要將其包裝在引號
0

如果我理解正確,部署應該是您想要的。

部署支持pod模板中幾乎所有字段的滾動更新。

http://kubernetes.io/docs/user-guide/deployments/

+0

部署不會幫助,因爲在.spec.template沒有變化。祕密名稱是相同的,但其值改變了 –

相關問題