|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
既知の問題
既知の問題は定期的に更新され、次回のリリースで直ちに対処されない可能性のある問題についてお知らせするように設計されています。最新の情報については、https://github.com/k3s-io/k3s/issues[K3sプロジェクトの問題トラッカー]のオープンおよびピン留めされた問題を確認してください。K3sの最新リリースを実行していない場合は、閉じた問題やリリースノートも検索して、あなたの問題がすでに解決されていないか確認してください。
Kine/SQL 2147483647 (最大整数) リビジョン制限
2024年5月以前のK3sのリリースで作成された外部SQLデータベースを使用する場合は、データベース内に210万以上のリビジョンを保存できるようにスキーママイグレーションを適用する必要があります。スキーマが更新されていないデータベースは、現在のデータストアリビジョンが2147483647に達すると読み取り専用になります。
Kubernetes APIに対して行ったリスト呼び出しの応答の`resourceVersion`フィールドを調べることで、データストアの現在のリビジョンを確認できます。 例えば、以下の出力では、現在のリビジョンは12345です:
$ kubectl get --raw /api/v1/namespaces?labelSelector=none
{"kind":"NamespaceList","apiVersion":"v1","metadata":{"resourceVersion":"12345"},"items":[]}
Dockerスナップ
K3sをDockerコンテナランタイムで使用する予定がある場合、DockerスナップパッケージはK3sの実行に問題を引き起こすことが知られているため推奨されません。オペレーティングシステムが提供するネイティブパッケージ管理システムを使用してDockerをインストールしてください。
Iptables
ノードがnftablesモードでiptables v1.6.1またはそれ以前を使用している場合、問題が発生する可能性があります。問題を避けるために、新しいiptables(1.6.1以上)を利用するか、iptablesレガシーモードを実行することをお勧めします。
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
iptablesのバージョン1.8.0-1.8.4にもK3sが失敗する原因となる既知の問題があります。いくつかの人気のあるLinux配布パッケージは、これらのバージョンをデフォルトで提供しています。あるバグは重複ルールの蓄積を引き起こし、ノードのパフォーマンスと安定性に悪影響を及ぼします。この問題の影響を受けているかどうかを確認する方法については、https://github.com/k3s-io/k3s/issues/3117[問題 #3117]を参照してください。
K3sには、正常に機能することがテストされたiptablesの既知の良好なバージョン(v1.8.8)が含まれています。K3sにバンドルされたiptablesのバージョンを使用するように指示するには、`--prefer-bundled-bin`オプションでK3sを起動するか、オペレーティングシステムからiptables/nftablesパッケージをアンインストールします。
|
バージョンゲート
`--prefer-bundled-bin`フラグは、2022-12リリース(v1.26.0+k3s1、v1.25.5+k3s1、v1.24.9+k3s1、v1.23.15+k3s1)から利用可能です。 |
ルートレスモード
ルートレスモードでK3sを実行することは実験的であり、いくつかの既知の問題があります。
v1.24.xからv1.25.xへのハードニングされたクラスターのアップグレード
Kubernetesは、Pod Security Standardsを優先するためにv1.25からPodSecurityPolicyを削除しました。PSSについては、https://kubernetes.io/docs/concepts/security/pod-security-standards/[アップストリームのドキュメント]で詳しく読むことができます。K3Sの場合、ノードに`PodSecurityPolicy`が設定されている場合は、いくつかの手動ステップを実行する必要があります。
-
すべてのノードで、
kube-apiserver-arg`の値を更新して`PodSecurityPolicy`のadmission-pluginを削除します。代わりに次のarg値を追加します: ’admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml'、ただしK3Sを再起動またはアップグレードしないでください。以下は、このアップデート後にノードをハードニングするための設定ファイルの例です。protect-kernel-defaults: true secrets-encryption: true kube-apiserver-arg: - 'admission-control-config-file=/var/lib/rancher/k3s/server/psa.yaml' - 'audit-log-path=/var/lib/rancher/k3s/server/logs/audit.log' - 'audit-policy-file=/var/lib/rancher/k3s/server/audit.yaml' - 'audit-log-maxage=30' - 'audit-log-maxbackup=10' - 'audit-log-maxsize=100' kube-controller-manager-arg: - 'terminated-pod-gc-threshold=10' - 'use-service-account-credentials=true' kubelet-arg: - 'streaming-connection-idle-timeout=5m' -
次のコンテンツを含む`/var/lib/rancher/k3s/server/psa.yaml`ファイルを作成します。他の名前空間も除外することを検討してください。以下の例では、
kube-system(必須)、cis-operator-system(オプションですが、Rancherを通じてセキュリティスキャンを実行する際に便利)、および`system-upgrade`(自動アップグレードを行う場合は必須)を除外します。apiVersion: apiserver.config.k8s.io/v1 kind: AdmissionConfiguration plugins: - name: PodSecurity configuration: apiVersion: pod-security.admission.config.k8s.io/v1beta1 kind: PodSecurityConfiguration defaults: enforce: "restricted" enforce-version: "latest" audit: "restricted" audit-version: "latest" warn: "restricted" warn-version: "latest" exemptions: usernames: [] runtimeClasses: [] namespaces: [kube-system, cis-operator-system, system-upgrade] -
通常通りアップグレードを行ってください。自動アップグレードを行う場合は、`system-upgrade-controller`ポッドが実行されている名前空間がhttps://kubernetes.io/docs/concepts/security/pod-security-admission/#pod-security-levels[ポッドセキュリティレベル]に従って特権として設定されていることを確認してください。
apiVersion: v1 kind: Namespace metadata: name: system-upgrade labels: # This value must be privileged for the controller to run successfully. pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/enforce-version: v1.25 # We are setting these to our _desired_ `enforce` level, but note that these below values can be any of the available options. pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/audit-version: v1.25 pod-security.kubernetes.io/warn: privileged pod-security.kubernetes.io/warn-version: v1.25 -
アップグレードが完了したら、クラスターから残っているPSPリソースを削除します。多くの場合、`/var/lib/rancher/k3s/server/manifests/`内のハードニングに使用されるカスタムファイルにPodSecurityPoliciesおよび関連するRBACリソースが存在する可能性があります。それらのリソースを削除すると、k3sは自動的に更新されます。時々、タイミングの関係で、これらのいくつかがクラスターに残されることがあります。その場合は、手動で削除する必要があります。ハードニングガイドに従っていた場合、次の方法で削除できるはずです。
# Get the resources associated with PSPs
$ kubectl get roles,clusterroles,rolebindings,clusterrolebindings -A | grep -i psp
# Delete those resources:
$ kubectl delete clusterrole.rbac.authorization.k8s.io/psp:restricted-psp clusterrole.rbac.authorization.k8s.io/psp:svclb-psp clusterrole.rbac.authorization.k8s.io/psp:system-unrestricted-psp clusterrolebinding.rbac.authorization.k8s.io/default:restricted-psp clusterrolebinding.rbac.authorization.k8s.io/system-unrestricted-node-psp-rolebinding && kubectl delete -n kube-system rolebinding.rbac.authorization.k8s.io/svclb-psp-rolebinding rolebinding.rbac.authorization.k8s.io/system-unrestricted-svc-acct-psp-rolebinding