Postgresql
PostgreSQL 與 Kubernetes 的故障轉移
我已經讓主從複製與 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
驗證。如果它太舊,請嘗試更新它。