【kubernetes-the-hard-way】05-kubernetes-configuration-files 生成用于身份验证的 Kubernetes 配置文件
生成用于身份验证的 Kubernetes 配置文件
在本实验中,您将生成 Kubernetes 配置文件,也称为 kubeconfigs,它使 Kubernetes 客户端能够定位并进行身份验证 Kubernetes API 服务器。
客户端身份验证配置
在本节中,您将为kubelet
和admin
用户生成 kubeconfig 文件。
kubelet Kubernetes 配置文件
为 Kubelet 生成 kubeconfig 文件时,必须使用与 Kubelet 节点名称匹配的客户端证书。 这将确保 Kubelet 得到 Kubernetes 节点授权者 的正确授权。
以下命令必须在生成 SSL 证书的同一目录中运行。
在node-0工作节点生成kubeconfig文件:
for host in node-0 node-1; do
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=${host}.kubeconfig
kubectl config set-credentials system:node:${host} \
--client-certificate=${host}.crt \
--client-key=${host}.key \
--embed-certs=true \
--kubeconfig=${host}.kubeconfig
kubectl config set-context default \
--cluster=kubernetes-the-hard-way \
--user=system:node:${host} \
--kubeconfig=${host}.kubeconfig
kubectl config use-context default \
--kubeconfig=${host}.kubeconfig
done
您可以使用以下命令列出生成的文件:
ls -1 node-0.kubeconfig node-1.kubeconfig
结果:
node-0.kubeconfig
node-1.kubeconfig
kube-proxy Kubernetes 配置文件
为kube-proxy
服务生成 kubeconfig 文件:
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=kube-proxy.kubeconfig
kubectl config set-credentials system:kube-proxy \
--client-certificate=kube-proxy.crt \
--client-key=kube-proxy.key \
--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
}
您可以使用以下命令列出生成的文件:
ls -1 kube-proxy.kubeconfig
结果:
kube-proxy.kubeconfig
kube-controller-manager Kubernetes 配置文件
为kube-controller-manager
服务生成 kubeconfig 文件:
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=kube-controller-manager.kubeconfig
kubectl config set-credentials system:kube-controller-manager \
--client-certificate=kube-controller-manager.crt \
--client-key=kube-controller-manager.key \
--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
}
您可以使用以下命令列出生成的文件:
ls -1 kube-controller-manager.kubeconfig
结果:
kube-controller-manager.kubeconfig
kube-scheduler Kubernetes 配置文件
为kube-scheduler
服务生成 kubeconfig 文件:
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://server.kubernetes.local:6443 \
--kubeconfig=kube-scheduler.kubeconfig
kubectl config set-credentials system:kube-scheduler \
--client-certificate=kube-scheduler.crt \
--client-key=kube-scheduler.key \
--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
}
您可以使用以下命令列出生成的文件:
ls -1 kube-scheduler.kubeconfig
结果:
kube-scheduler.kubeconfig
管理 Kubernetes 配置文件
为admin
用户生成 kubeconfig 文件:
{
kubectl config set-cluster kubernetes-the-hard-way \
--certificate-authority=ca.crt \
--embed-certs=true \
--server=https://127.0.0.1:6443 \
--kubeconfig=admin.kubeconfig
kubectl config set-credentials admin \
--client-certificate=admin.crt \
--client-key=admin.key \
--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
}
您可以使用以下命令列出生成的文件:
ls -1 admin.kubeconfig
结果:
admin.kubeconfig
分发 Kubernetes 配置文件
将 kubelet
和 kube-proxy
kubeconfig 文件复制到 node-0 实例:
for host in node-0 node-1; do
ssh root@$host "mkdir /var/lib/{kube-proxy,kubelet}"
scp kube-proxy.kubeconfig \
root@$host:/var/lib/kube-proxy/kubeconfig \
scp ${host}.kubeconfig \
root@$host:/var/lib/kubelet/kubeconfig
done
将kube-controller-manager
和kube-scheduler
kubeconfig 文件复制到控制器实例:
scp admin.kubeconfig \
kube-controller-manager.kubeconfig \
kube-scheduler.kubeconfig \
root@server:~/
下一步: 生成数据加密配置和密钥