启动 Kubernetes 控制平面
在本实验中,您将启动 Kubernetes 控制平面。以下组件将被安装在控制器机器上:Kubernetes API 服务器、调度器和控制器管理器。
先决条件
将 Kubernetes 二进制文件和 systemd 单元文件复制到 server 实例:
scp \
downloads/kube-apiserver \
downloads/kube-controller-manager \
downloads/kube-scheduler \
downloads/kubectl \
units/kube-apiserver.service \
units/kube-controller-manager.service \
units/kube-scheduler.service \
configs/kube-scheduler.yaml \
configs/kube-apiserver-to-kubelet.yaml \
root@server:~/本实验中的命令必须在控制器实例 server 上运行。使用 ssh 命令登录到控制器实例。例如:
ssh root@server配置 Kubernetes 控制平面
创建 Kubernetes 配置目录:
mkdir -p /etc/kubernetes/config安装 Kubernetes 控制器二进制文件
安装 Kubernetes 二进制文件:
{
chmod +x kube-apiserver \
kube-controller-manager \
kube-scheduler kubectl
mv kube-apiserver \
kube-controller-manager \
kube-scheduler kubectl \
/usr/local/bin/
}配置 Kubernetes API 服务器
{
mkdir -p /var/lib/kubernetes/
mv ca.crt ca.key \
kube-api-server.key kube-api-server.crt \
service-accounts.key service-accounts.crt \
encryption-config.yaml \
/var/lib/kubernetes/
}创建 kube-apiserver.service systemd 单元文件:
mv kube-apiserver.service \
/etc/systemd/system/kube-apiserver.service配置 Kubernetes 控制器管理器
移动 kube-controller-manager kubeconfig 文件到指定位置:
mv kube-controller-manager.kubeconfig /var/lib/kubernetes/创建 kube-controller-manager.service systemd 单元文件:
mv kube-controller-manager.service /etc/systemd/system/配置 Kubernetes 调度器
移动 kube-scheduler kubeconfig 文件到指定位置:
mv kube-scheduler.kubeconfig /var/lib/kubernetes/创建 kube-scheduler.yaml 配置文件:
mv kube-scheduler.yaml /etc/kubernetes/config/创建 kube-scheduler.service systemd 单元文件:
mv kube-scheduler.service /etc/systemd/system/启动控制器服务
{
systemctl daemon-reload
systemctl enable kube-apiserver \
kube-controller-manager kube-scheduler
systemctl start kube-apiserver \
kube-controller-manager kube-scheduler
}等待最多10秒钟,Kubernetes API 服务器完全初始化。
验证
kubectl cluster-info \
--kubeconfig admin.kubeconfigKubernetes control plane is running at https://127.0.0.1:6443Kubelet 授权的 RBAC
在本节中,您将配置 RBAC 权限,以允许 Kubernetes API 服务器访问每个工作节点上的 Kubelet API。访问 Kubelet API 是检索指标、日志和在 pod 中执行命令所必需的。
本教程将 Kubelet 的
--authorization-mode标志设置为Webhook。Webhook 模式使用 SubjectAccessReview API 来确定授权。
本节中的命令将影响整个集群,只需在控制器节点上运行。
ssh root@server创建具有访问 Kubelet API 权限并执行与管理 pod 相关的最常见任务的 system:kube-apiserver-to-kubelet ClusterRole:
kubectl apply -f kube-apiserver-to-kubelet.yaml \
--kubeconfig admin.kubeconfig验证
此时,Kubernetes 控制平面已经启动并运行。在 jumpbox 机器上运行以下命令以验证其工作:
发出 HTTP 请求以获取 Kubernetes 版本信息:
curl -k --cacert ca.crt https://server.kubernetes.local:6443/version{
"major": "1",
"minor": "28",
"gitVersion": "v1.28.3",
"gitCommit": "a8a1abc25cad87333840cd7d54be2efaf31a3177",
"gitTreeState": "clean",
"buildDate": "2023-10-18T11:33:18Z",
"goVersion": "go1.20.10",
"compiler": "gc",
"platform": "linux/arm64"
}