已知问题
我们会定期更新已知问题文档,说明下一个即将发布的版本中可能无法立即解决的问题。
Iptables
如果你使用 nftables 模式而不是传统模式来运行 iptables,则可能会遇到问题。我们建议使用较新的 iptables(例如 1.6.1+)来避免出现问题。
此外,版本 1.8.0-1.8.4 存在可能导致 K3s 失败的问题。有关解决方法,请参阅其他操作系统准备。
Rootless 模式
使用 Rootless 模式运行 K3s 是实验性的,存在几个已知问题。
将强化集群从 v1.24.x 升级到 v1.25.x
Kubernetes v1.25 删除了 PodSecurityPolicy,支持 Pod Security Standard(PSS)。你可以在上游文档中阅读有关 PSS 的更多信息。对于 K3s,如果在节点上配置了任何 PodSecurityPolicy
,则必须执行一些手动步骤。
-
在所有节点上,更新
kube-apiserver-arg
值以删除PodSecurityPolicy
admission-plugin。添加以下参数值:'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
pod 的命名空间按照 Pod 安全级别的要求设置为 privileged。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 将自动更新。由于时间原因,一些资源可能会留在集群中,在这种情况下,你需要手动删除它们。如果之前遵循了强化指南,你应该能够通过以下方式删除它们:
# 获取与 PSP 关联的资源
$ kubectl get roles,clusterroles,rolebindings,clusterrolebindings -A | grep -i psp
# 删除这些资源
$ 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