
kubeadm을 사용하여 kubernetes 클러스터를 초기화하려고 하는데 안타깝게도 예상대로 작동하지 않습니다. 이것은 kubeadm 구성 파일입니다:
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: "v1.19.16"
networking:
podSubnet: "10.230.0.0/16"
dnsDomain: "company.internal"
etcd:
external:
endpoints:
- https://kube-etcd-1:2379
- https://kube-etcd-2:2379
- https://kube-etcd-3:2379
불행히도 다음을 사용하여 초기화하려고 하면 이 오류가 계속 발생합니다 kubeadm init --config /root/.config/new-config.yaml
.
Controller-manager.conf 파일이 존재하지 않거나 유효하지 않습니다. stat /etc/kubernetes/controller-manager.conf: 해당 파일 또는 디렉터리가 없습니다.
kubeadm은 인증서가 이미 생성되어 /etc/kubernetes/pki에서 찾을 수 있다는 사실을 자동으로 식별하며, 이 컨텍스트에서만 이 오류가 발생합니다. 인증서를 제거하면 controller-manager.conf
. 이 문제를 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?
--v=5를 사용하면 기본적으로 control-manager.conf를 찾을 수 없다는 것 외에는 어떤 통찰력도 제공되지 않습니다.
kube-controlplane-1:/etc/kubernetes/pki# kubeadm init --config /root/.config/new-config.yaml --v=6
I1221 00:15:05.160594 1964 initconfiguration.go:200] loading configuration from "/root/.config/new-config.yaml"
I1221 00:15:05.164578 1964 initconfiguration.go:103] detected and using CRI socket: /run/containerd/containerd.sock
I1221 00:15:05.165098 1964 interface.go:400] Looking for default routes with IPv4 addresses
I1221 00:15:05.165142 1964 interface.go:405] Default route transits interface "ens192"
I1221 00:15:05.165518 1964 interface.go:208] Interface ens192 is up
I1221 00:15:05.165730 1964 interface.go:256] Interface "ens192" has 2 addresses :[10.88.88.225/24 fe80::250:56ff:febe:79f5/64].
I1221 00:15:05.165856 1964 interface.go:223] Checking addr 10.88.88.225/24.
I1221 00:15:05.165901 1964 interface.go:230] IP found 10.88.88.225
I1221 00:15:05.165937 1964 interface.go:262] Found valid IPv4 address 10.88.88.225 for interface "ens192".
I1221 00:15:05.165969 1964 interface.go:411] Found active IP 10.88.88.225
W1221 00:15:05.180639 1964 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
stat /etc/kubernetes/controller-manager.conf: no such file or directory
the controller-manager.conf file does not exists or it is not valid
k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig.ValidateKubeconfigsForExternalCA
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go:372
k8s.io/kubernetes/cmd/kubeadm/app/cmd.newInitData
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/init.go:386
k8s.io/kubernetes/cmd/kubeadm/app/cmd.NewCmdInit.func3
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/init.go:193
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).InitData
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:183
k8s.io/kubernetes/cmd/kubeadm/app/cmd.NewCmdInit.func1
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/init.go:141
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).execute
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:842
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).ExecuteC
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:950
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).Execute
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:887
k8s.io/kubernetes/cmd/kubeadm/app.Run
/workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/kubeadm.go:50
main.main
_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/kubeadm.go:25
runtime.main
/usr/local/go/src/runtime/proc.go:204
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1374
이를 디버깅하는 방법에 대한 아이디어를 환영합니다!
감사해요!
이후 편집: kubeadm 버전: 1.19.16
답변1
글쎄요, kubeadm 버전이 없으면 추측할 수는 없지만 일반적인 아이디어는 다음과 같습니다.외부 CA 모드(당신이 속한 이유는ca.crt는 존재하지만 키는 존재하지 않습니다.)그 방법"이미 구성됨" 모드로 배포할 것으로 예상하므로 및 둘 다 controller-manager.conf
이미 scheduler.conf
존재해야 합니다.
짧은 버전은 디렉토리의 내용에 무슨 일이 일어나고 있는지 확실히 이해하고 /etc/kubernetes
다음에 사용 중인 관련 버전을 게시하는 것 입니다.