- 이 랩에서는
kubeconfig
이라 불리는, Kubernetes 설정 파일을 생성합니다. - kubeconfig는 Kubernetes 클라이언트가 Kubernetes API 서버를 찾고 인증 할 수 있도록 해줍니다.
이 섹션에서는 이하의 kubeconfig 파일을 생성합니다.
- 워커 노드 용
kubelet
kube-proxy
- 마스터 노드 용
kube-controller-manager
kube-scheduler
클라이언트admin
사용자
위 쿠버네티스 컴포넌트에 대한 설명은 이곳을 참고하세요.
- kubectl config set-cluster : 클러스터 위치에 대한 구성을 설정
- kubectl config set-credentials : 인증에 사용되는 사용자 이름 및 클라이언트 인증서를 설정
- kubectl config set-context default : 디폴트 컨텍스트를 설정
- kubectl config use-context default : 위 구성으로 현재 컨텍스트를 설정
KUBERNETES_PUBLIC_ADDRESS=$(gcloud compute addresses describe kubernetes-the-hard-way \
--region $(gcloud config get-value compute/region) \
--format 'value(address)')
Kubelet kubeconfig 파일을 생성할 때 Kubelet의 노드 이름과 일치하는 클라이언트 인증서를 사용해야합니다. 이렇게 하면 Kuubenetes Node Authorizer가 Kubelet을 올바르게 인증할 수 있습니다.
각 워커 노드에 대해 kubeconfig 파일 생성
for instance in worker-0 worker-1; do
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 \
--kubeconfig=${instance}.kubeconfig
kubectl config set-credentials system:node:${instance} \
--client-certificate=${instance}.pem \
--client-key=${instance}-key.pem \
--embed-certs=true \
--kubeconfig=${instance}.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:node:${instance} \
--kubeconfig=${instance}.kubeconfig
kubectl config use-context default --kubeconfig=${instance}.kubeconfig
done
결과
worker-0.kubeconfig
worker-1.kubeconfig
kube-proxy
서비스에 대해 kubeconfig 파일 생성
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-credentials system:kube-proxy \
--client-certificate=kube-proxy.pem \
--client-key=kube-proxy-key.pem \
--embed-certs=true \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
}
결과
kube-proxy.kubeconfig
kube-controller-manager
서비스에 대해 kubeconfig 파일 생성
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-credentials system:kube-controller-manager \
--client-certificate=kube-controller-manager.pem \
--client-key=kube-controller-manager-key.pem \
--embed-certs=true \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-controller-manager \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config use-context default --kubeconfig=kube-controller-manager.kubeconfig
}
결과
kube-controller-manager.kubeconfig
kube-scheduler
서비스에 대해 kubeconfig 파일 생성
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-credentials system:kube-scheduler \
--client-certificate=kube-scheduler.pem \
--client-key=kube-scheduler-key.pem \
--embed-certs=true \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:kube-scheduler \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config use-context default --kubeconfig=kube-scheduler.kubeconfig
}
결과
kube-scheduler.kubeconfig
admin
사용자에 대해 kubeconfig 파일 생성
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.pem \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=admin.kubeconfig
kubectl config set-credentials admin \
--client-certificate=admin.pem \
--client-key=admin-key.pem \
--embed-certs=true \
--kubeconfig=admin.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=admin \
--kubeconfig=admin.kubeconfig
kubectl config use-context default --kubeconfig=admin.kubeconfig
}
결과
admin.kubeconfig
kubelet
및 kube-proxy
kubeconfig 파일을 각 워커 노드에 복사합니다.
for instance in worker-0 worker-1; do
gcloud compute scp ${instance}.kubeconfig kube-proxy.kubeconfig ${instance}:~/
done
kube-controller-manage
, kube-scheduler
, admin
사용자 kubeconfig 파일을 각 마스터 노드에 복사합니다.
for instance in controller-0 controller-1; do
gcloud compute scp admin.kubeconfig kube-controller-manager.kubeconfig kube-scheduler.kubeconfig ${instance}:~/
done