第8章 既知の問題
SKUPPER-1723 -: 1.4 リリースの接続およびステータスの動作
サービスネットワークのいくつかの動作が予期しないものです。
- サービスを受け入れると、確立された接続は終了しません。
- 'skupper network status' コマンドは、公開されていないサービスの出力を表示します。
回避策
サービスの検証を解除する前に、サービスに関連付けられているすべての接続を手動で閉じます。
注記この問題はリリース 1.5 で解決されています。
SKUPPER-306 - Skupper ネットワークステータスが多数のサイトでは動作しない
サービスネットワークのトポロジーによっては、
skupper ネットワークのステータス
がタイムアウトし、必要な情報が提供されない場合があります。回避策
コマンドの解決時間を長くするために、タイムアウトを延長して、解決するコマンドの時間を長く提供できます。次に例を示します。
skupper network status --timeout 10m
または、ネットワークステータスを解決するための別のメカニズムを持つ Red Hat Service Interconnect 1.5 にアップグレードします。
SKUPPER-1069 - OpenShift 以外のクラスターで skupper init が失敗する
OpenShift 以外のクラスター上にサイトを作成する場合、サイトの作成で問題が発生し、
skupper status
レポートpending
になる可能性があります。Pod を確認すると、次のようなステータスが表示される場合があります。
$ kubectl get pods NAME READY STATUS RESTARTS AGE skupper-router-698478664c-6xq72 0/2 CreateContainerConfigError 0 17s skupper-service-controller-698c785d7-dqc8m 0/1 CreateContainerConfigError 0 10s
この問題が発生していることを確認するには、次のような Kubernetes イベントを検索します。
$ kubectl get events| grep Warning Warning Failed 17m (x4 over 17m) kubelet Error: container has runAsNonRoot and image will run as root
回避策
次のようにユーザー ID を指定します。
$ skupper init --run-as-user 2000
2000 はコンテナーを実行するユーザーの ID です。ゼロ以外の任意の数値を ID として割り当てることができます。
YAML を使用してサイトを作成する場合は、data セクションでユーザーを指定します。
data: name: my-site run-as-user: "2000"
注記この回避策では、このサイトに Red Hat Service Interconnect コンソールコンポーネントをデプロイすることはできません。この問題が解決されるまで、コンソールコンポーネントを OpenShift サイトにデプロイする必要があります。
SKUPPER-869 - TCP トランスポートのアイドル接続タイムアウトを有効にする
クライアントが強制終了するなど、エンドポイントが終了すると、もう一方のエンドポイントは半分切断された接続を監視します。他のエンドポイントが接続を切断しないか、接続へのデータ送信を試行しないと、Skupper ルーターによってその接続に割り当てられたメモリーが解放されません。
回避策
可能であれば、この動作を使用するクライアントサーバー設定を避けてください。たとえば、サーバーが休止状態の接続を自動的に閉じるか、クライアントとの通信を試みる場合は、クライアントが終了すると、Skupper ルーターはメモリーを解放します。
SKUPPER-805 - OCP 3.11 の通常ユーザーでは skupper init が使用できない
回避策
以下の 2 つの回避策があります。
- YAML を使用してサイトを設定します。
-
以下のパーミッションでサービスアカウントを作成し、
skupper
CLI を実行します。
--- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: skupper-non-admin rules: - apiGroups: - "" resources: - configmaps - pods - pods/exec - services - secrets - serviceaccounts verbs: - get - list - watch - create - update - delete - apiGroups: - apps resources: - deployments - statefulsets - daemonsets verbs: - get - list - watch - create - update - delete - apiGroups: - route.openshift.io resources: - routes verbs: - get - list - watch - create - delete - apiGroups: - networking.k8s.io resources: - ingresses - networkpolicies verbs: - get - list - watch - create - delete - apiGroups: - projectcontour.io resources: - httpproxies verbs: - get - list - watch - create - delete - apiGroups: - rbac.authorization.k8s.io resources: - rolebindings - roles verbs: - get - list - watch - create - delete
上記の YAML を
role.yaml
に保存し、これを適用して、以下を使用してロールをユーザー名にバインドできます。$ oc apply -f role.yaml $ oc policy add-role-to-user skupper-non-admin <username> -n <namespace-name> --role-namespace=<namespace-name>