9.9. IP フェイルオーバーの削除
IP フェイルオーバーが最初に設定されている場合、クラスターのワーカーノードは、Keepalived 用に 224.0.0.18
のマルチキャストパケットを明示的に許可する iptables
ルールを使用して変更されます。ノードが変更されるため、IP フェイルオーバーを削除するには、ジョブを実行して iptables
ルールを削除し、Keepalived が使用する仮想 IP アドレスを削除する必要があります。
手順
オプション: ConfigMap として保存されるチェックおよび通知スクリプトを特定し、削除します。
IP フェイルオーバーの Pod が ConfigMap をボリュームとして使用するかどうかを決定します。
$ oc get pod -l ipfailover \ -o jsonpath="\ {range .items[?(@.spec.volumes[*].configMap)]} {'Namespace: '}{.metadata.namespace} {'Pod: '}{.metadata.name} {'Volumes that use config maps:'} {range .spec.volumes[?(@.configMap)]} {'volume: '}{.name} {'configMap: '}{.configMap.name}{'\n'}{end} {end}"
出力例
Namespace: default Pod: keepalived-worker-59df45db9c-2x9mn Volumes that use config maps: volume: config-volume configMap: mycustomcheck
前述の手順でボリュームとして使用される ConfigMap の名前が提供されている場合は、ConfigMap を削除します。
$ oc delete configmap <configmap_name>
IP フェイルオーバーの既存デプロイメントを特定します。
$ oc get deployment -l ipfailover
出力例
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE default ipfailover 2/2 2 2 105d
デプロイメントを削除します。
$ oc delete deployment <ipfailover_deployment_name>
ipfailover
サービスアカウントを削除します。$ oc delete sa ipfailover
IP フェイルオーバーの設定時に追加された IP テーブルルールを削除するジョブを実行します。
以下の例のような内容で
remove-ipfailover-job.yaml
などのファイルを作成します。apiVersion: batch/v1 kind: Job metadata: generateName: remove-ipfailover- labels: app: remove-ipfailover spec: template: metadata: name: remove-ipfailover spec: containers: - name: remove-ipfailover image: quay.io/openshift/origin-keepalived-ipfailover:4.9 command: ["/var/lib/ipfailover/keepalived/remove-failover.sh"] nodeSelector: kubernetes.io/hostname: <host_name> <.> restartPolicy: Never
<.> IP フェイルオーバー用に設定されたクラスター内の各ノードのジョブを実行し、毎回ホスト名を置き換えます。
ジョブを実行します。
$ oc create -f remove-ipfailover-job.yaml
出力例
job.batch/remove-ipfailover-2h8dm created
検証
ジョブが IP フェイルオーバーの初期設定を削除していることを確認します。
$ oc logs job/remove-ipfailover-2h8dm
出力例
remove-failover.sh: OpenShift IP Failover service terminating. - Removing ip_vs module ... - Cleaning up ... - Releasing VIPs (interface eth0) ...