알려진 이슈
알려진 이슈는 주기적으로 업데이트되며, 다음 릴리스에서 즉시 해결되지 않을 수 있는 문제에 대해 알려드리기 위해 고안되었습니다.
Iptables
레거시 대신 nftables 모드에서 iptables를 실행하는 경우 문제가 발생할 수 있습니다. 문제를 방지하려면 최신 버전(예: 1.6.1+)의 iptables를 사용하는 것이 좋습니다.
또한 1.8.0-1.8.4 버전에는 K3s가 실패할 수 있는 알려진 문제가 있습니다. 해결 방법은 추가 OS 준비를 참조하세요.
Rootless Mode
루트리스 모드로 K3s를 실행하는 것은 실험 중이며 몇 가지 알려진 이슈가 있습니다.
강화된(Hardened) 클러스터를 v1.24.x에서 v1.25.x로 업그레이드하기
쿠버네티스는 파드 보안 표준(PSS, Pod Security Standards)을 위해 v1.25에서 PodSecurityPolicy를 제거했습니다. PSS에 대한 자세한 내용은 업스트림 문서에서 확인할 수 있습니다. K3S의 경우, 노드에 'PodSecurityPolicy’가 구성된 경우 수행해야 하는 몇 가지 수동 단계가 있습니다.
-
모든 노드에서
kube-apiserver-arg
값을 업데이트하여PodSecurityPolicy
어드미션 플러그인을 제거합니다. 대신 다음 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]
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