Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第7章 既知の問題

7.1. 概要

OpenShift Container Platform クラスターのアップグレード時に、2 つの主なデータ移行が実行されます。最初は、現行バージョンの OpenShift Container Platform の実行中に生じ、2 つ目はアップグレードの完了後に生じます。

アップグレード前の移行に失敗した場合、アップグレードは中止し、クラスター管理者はアップグレードを再度実行する前にデータの不整合についての問題を解決する必要があります。アップグレード後の移行に失敗する場合には、アップグレードが完了しているため、クラスター管理者はデータ移行の問題をできるだけ早く解決する必要があります。ここでは、既知のデータの不整合の問題とその解決方法について説明します。

7.2. サービス定義の重複するポート

Service オブジェクトにはより厳格な検証ルールがあります。その 1 つは重複した Ports エントリーを許可しないルールです (例: ProtocolPort のペア)。(BZ#1563929)

エラー出力

TASK [Upgrade all storage] ****************************************************************************************************************************************************************************
fatal: [test.linux.lan]: FAILED! => {
    "changed": true,
    "cmd": [
        "oc",
        "adm",
        "--config=/etc/origin/master/admin.kubeconfig",
        "migrate",
        "storage",
        "--include=*",
        "--confirm"
    ],
    "delta": "0:07:06.574833",
    "end": "2018-04-03 11:22:07.834827",
    "failed_when_result": true,
    "msg": "non-zero return code",
    "rc": 1,
    "start": "2018-04-03 11:15:01.259994",
}

STDOUT

error: Service "my-service" is invalid: spec.ports[5]: Duplicate value: api.ServicePort{Name:"", Protocol:"TCP", Port:8500, TargetPort:intstr.IntOrString{Type:0, IntVal:0, StrVal:""}, NodePort:0}
summary: total=37768 errors=1 ignored=0 unchanged=37767 migrated=0
info: to rerun only failing resources, add --include=services
error: 1 resources failed to migrate

この問題を解決するには、以下を実行します。

  1. クラスター管理者として CLI にログインし、エラーに一覧表示されている Service オブジェクトを検査します。
  2. 重複したポートを削除するためにオブジェクトの .spec.ports を編集します。この際、.spec.ports[*].name.spec.ports[*].port は一意である必要があることに留意してください。