跳至内容

实验 10:为 kubectl 配置远程访问

信息

这是由 Kelsey Hightower(GitHub:kelseyhightower)最初编写的 “Kubernetes the hard way” 的一个分支。与原始版本不同的是,原始版本基于 ARM64 架构的类 Debian 发行版,而此分支则针对 Rocky Linux 等企业级 Linux 发行版,这些发行版运行在 x86_64 架构上。

在本实验中,您将根据 admin 用户凭证为 kubectl 命令行实用程序生成一个 kubeconfig 文件。

请在 jumpbox 机器上运行本实验中的命令。

管理员 Kubernetes 配置文件

每个 kubeconfig 都需要一个 Kubernetes API 服务器进行连接。

根据早期实验中的 /etc/hosts DNS 条目,您应该能够 ping通 server.kubernetes.local

curl -k --cacert ca.crt \
  https://server.kubernetes.local:6443/version
{
  "major": "1",
  "minor": "32",
  "gitVersion": "v1.32.0",
  "gitCommit": "70d3cc986aa8221cd1dfb1121852688902d3bf53",
  "gitTreeState": "clean",
  "buildDate": "2024-12-11T17:59:15Z",
  "goVersion": "go1.23.3",
  "compiler": "gc",
  "platform": "linux/amd64"
}

生成一个适合以 admin 用户身份进行身份验证的 kubeconfig 文件

  kubectl config set-cluster kubernetes-the-hard-way \
    --certificate-authority=ca.crt \
    --embed-certs=true \
    --server=https://server.kubernetes.local:6443

  kubectl config set-credentials admin \
    --client-certificate=admin.crt \
    --client-key=admin.key

  kubectl config set-context kubernetes-the-hard-way \
    --cluster=kubernetes-the-hard-way \
    --user=admin

  kubectl config use-context kubernetes-the-hard-way

运行上述命令的结果应该会在 kubectl 命令行工具使用的默认位置 ~/.kube/config 创建一个 kubeconfig 文件。这也意味着您可以不指定配置运行 kubectl 命令。

验证

检查远程 Kubernetes 集群的版本

kubectl version
Client Version: v1.32.0
Kustomize Version: v5.5.0
Server Version: v1.32.0

列出远程 Kubernetes 集群中的节点

kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
node-0   Ready    <none>   30m   v1.31.2
node-1   Ready    <none>   35m   v1.31.2

下一步:置备 Pod 网络路由

作者:Wale Soyinka

贡献者:Steven Spencer