マスタースレーブレプリケーションをKubernetesで動作させていますが、フェイルオーバーを実装したいと思います。 service = postgresqlおよびrole = masterまたはrole = slaveロールで実行されているポッドがあります。マスターに障害が発生した場合、別のマスターを選択し、その役割ラベルをマスターに変更して、postgresql-masterサービスが新しいマスターを指すようにします。
2つの質問:
更新:ラベルの更新時の正確なエラー
$ ./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
それを確認します。古すぎる場合は、更新してみてください。