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";
};
}