Postgresql

PostgreSQL 與 Kubernetes 的故障轉移

  • September 3, 2015

我已經讓主從複製與 Kubernetes 一起工作,但現在想實現故障轉移。我有使用 service=postgresql 和 role=master 或 role=slave 角色執行的 pod。當master出現故障時,我想選擇另一個master並將其角色標籤更改為master,因此postgresql-master服務指向新的master。

兩個問題:

  • 我可以從 pod 連接到 Kubernetes API 以在 master 死亡時收到通知並查看哪個 pod 必須成為新的 master 嗎?
  • 當我嘗試通過說“kubectl label pod postgresql-slave role=master”來更改標籤時,我收到消息說我只能更改正在執行的 pod 的圖像,儘管我從命令幫助中得到了我應該能夠的印象更改 pod 的標籤。我究竟做錯了什麼?

更新:更新標籤時的確切錯誤

$ ./kubectl get pod -l type=postgresql
POD                       IP           CONTAINER(S)   IMAGE(S)                      HOST                  LABELS                        STATUS    CREATED     MESSAGE
postgresql-master-y868v   172.17.0.2                                                127.0.0.1/127.0.0.1   role=master,type=postgresql   Running   3 minutes   
                                   postgresql     genericsites/postgresql:0.1                                                       Running   3 minutes   

vincent@vincent-netbook-e11:~/Documents/Develop/Web/websites-system/installation/kubernetes$ ./kubectl label pod postgresql-master-y868v test=foo
Error from server: Pod "postgresql-master-y868v" is invalid: spec: invalid value '* pod definition in JSON *': may not update fields other than container.image

更新:似乎確實可以更改服務的標籤,這也許可以讓我解決問題,但當然不是最佳的

@vincent 伺服器的版本可能太舊了。請嘗試kubectl version驗證。如果它太舊,請嘗試更新它。

引用自:https://serverfault.com/questions/708255