Kubernetes Rancher 구성자 보안 컨텍스트 오류

Kubernetes Rancher 구성자 보안 컨텍스트 오류

local-path내 Kubernetes 클러스터에 Rancher.io의 프로비저너를 구현하려고 합니다. 이는 k8s테스트 목적으로 NixOS에 설치된 단일 노드 클러스터입니다 .

나는 목장주의 절차를 따릅니다:

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.24/deploy/local-path-storage.yaml

이 시점에서는 오류가 없으며 Rancher 구성자가 예상대로 실행되고 있음을 확인할 수 있습니다.

$ kubectl get pods -n local-path-storage
NAME                                      READY   STATUS    RESTARTS   AGE
local-path-provisioner-8559f79bcf-gg2rk   1/1     Running   0          5m55s

다음으로 나는 다음에 설명된 대로 상태 저장 애플리케이션 프로젝트를 실행해 보았습니다.그들의 문서, 다음과 같습니다:

kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pvc/pvc.yaml
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod/pod.yaml

불행히도 PVC가 붙어있었습니다.할 것상태에서는 다음 오류가 발생합니다.

$ kubectl events pvc --types=Warning
LAST SEEN               TYPE      REASON                OBJECT                                 MESSAGE
3m29s (x5 over 7m14s)   Warning   ProvisioningFailed    PersistentVolumeClaim/wp-pv-claim      failed to provision volume with StorageClass "local-path": failed to create volume pvc-966b701d-9a11-4fa5-bb16-e7c40cb8ca58: Pod "helper-pod-create-pvc-966b701d-9a11-4fa5-bb16-e7c40cb8ca58" is invalid: spec.containers[0].securityContext.privileged: Forbidden: disallowed by cluster policy

알아요포드 보안 정책이제 더 이상 사용되지 않습니다.

저는 NixOS와 마찬가지로 Kubernetes의 초보자이기 때문에 보안 컨텍스트를 어디에서 변경해야 할지, 어떻게 관리해야 할지 모르겠습니다.

자세한 내용은 NixOS Kubernetes 관련 구성을 참조하세요.

{ config, pkgs, ... }:
let
  kubeMasterIP = "192.168.100.212";
  kubeMasterHostname = "k8s-nix";
  kubeMasterAPIServerPort = 6443;
in
{
  # resolve master hostname
  networking.extraHosts = "${kubeMasterIP} ${kubeMasterHostname}";

  # Required packages for building cluster
  environment.systemPackages = with pkgs; [
    cri-o
    podman
    kubernetes
    kubernetes-helm
  ];

  # Kubernetes
  services.kubernetes = {
    roles = ["master" "node"];
    masterAddress = kubeMasterHostname;
    apiserverAddress = "https://${kubeMasterHostname}:${toString kubeMasterAPIServerPort}";
    easyCerts = true;
    apiserver = {
      securePort = kubeMasterAPIServerPort;
      advertiseAddress = kubeMasterIP;
    };

    # use coredns
    addons.dns.enable = true;

    # needed if you use swap
    kubelet.extraOpts = "--fail-swap-on=false";
  };

  environment.shellAliases = {
    k = "kubectl";
  };
}

関連情報