PodSecurityPolicy unable to admit pod
포스트
취소

PodSecurityPolicy unable to admit pod

개요

k8s에 kubeflow를 설치 한 뒤 pipeline을 Run 하려고 할때 PodSecurityPolicy: unable to admit pod 오류 발생.

오류 내용

메세지 예시

1
This step is in Error state with this message: task 'xx' errored: pods "kube-pipeline" is forbidden: PodSecurityPolicy: unable to admit pod: []

발생 환경

  • cluster plugin PodSecurityPolicy가 enable상태일 경우. kubeflow 1.5 환경에서 발생.

원인

  • 참고 : https://kubernetes.io/docs/concepts/security/pod-security-policy/
  • 대략적인 요약
    • Pod를 생성할 때 일반적으로 컨트롤러 관리자를 통해 생성. 정책에 대한 컨트롤러 액세스 권한이 필요한데 해당 정책이 없으면 Pod생성이 되지 않음.

PodSecurityPolicy

일단 k8s 1.25에서 삭제될 예정이다.

Caution: PodSecurityPolicy is deprecated as of Kubernetes v1.21, and will be removed in v1.25.

해결 방법

  • kubeflow는 rbac을 사용.
  • 아래와 같이 ClusterRole의 rules에 정책 추가
1
2
3
4
5
6
7
8
9
10
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: <role name>
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs:     ['use']
  resourceNames:
  - <list of policies to authorize>

kubeflow ClusterRole 대상

  • kubeflow-kubernetes-admin
  • kubeflow-kubernetes-edit
  • kubeflow-kubernetes-view

대상 ClusterRole 모두 수정 후 pipeline을 run해보자.

마치며

실제 테스트는 생략한다. kubeflow에서 사용하는 ClusterRole이 많아 PSP를 사용하는 Cluster의 경우엔 여러가지 확인이 필요하다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Mac OS Minikube 설치

IaaS, PaaS, SaaS