首页主机资讯centos k8s API使用指南

centos k8s API使用指南

时间2025-12-02 13:38:03发布访客分类主机资讯浏览680
导读:CentOS 上使用 Kubernetes API 的完整指南 一 环境准备与前置检查 在 CentOS 上准备 kubeconfig 并验证集群连通性: 安装 kubectl(示例): 下载并安装:curl -LO “https:/...

CentOS 上使用 Kubernetes API 的完整指南

一 环境准备与前置检查

  • CentOS 上准备 kubeconfig 并验证集群连通性:
    • 安装 kubectl(示例):
      • 下载并安装:curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl” & & chmod +x kubectl & & sudo mv kubectl /usr/local/bin/kubectl
    • 配置 kubeconfig(如使用 kubeadm 初始化集群后):
      • mkdir -p $HOME/.kube
      • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      • sudo chown $(id -u):$(id -g) $HOME/.kube/config
    • 验证:
      • kubectl cluster-info
      • kubectl get nodes
      • kubectl api-resources
  • 以上步骤完成后,kubectl 已就绪,可用于后续 API 调用与调试。

二 三种访问 Kubernetes API 的方式

  • 方式一 kubectl 代理本地访问(最简单)
    • 启动代理:kubectl proxy(默认监听 http://localhost:8001
    • 访问示例:curl http://localhost:8001/api/v1/pods
  • 方式二 直接使用 curl 调用 API Server(使用 kubeconfig 中的 Token)
    • 获取 API Server 地址与 Token:
      • APISERVER=$(kubectl config view --minify -o jsonpath=‘{ .clusters[0].cluster.server} ’)
      • TOKEN=$(kubectl config view --minify --output ‘jsonpath={ .users[0].user.token} ’)
    • 调用示例:
      • curl -k -H “Authorization: Bearer $TOKEN” ${ APISERVER} /api/v1/pods
  • 方式三 Pod 内访问 API Server(ServiceAccount)
    • 在 Pod 内使用挂载的 ServiceAccount 令牌:
      • curl -k -H “Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)” https://kubernetes.default.svc/api/v1/namespaces
  • 提示:生产环境不建议使用 -k 跳过证书校验,应配置 CA 证书或采用受控的 Ingress/代理通道。

三 常见操作示例

  • 查看资源与版本
    • 查看所有资源与 API 组:kubectl api-resources
    • 以 JSON 输出 Pods:kubectl get pods -o json
  • 直接创建 Pod(HTTP API)
    • 准备请求体 pod.json:
      • {
        • “apiVersion”: “v1”,
        • “kind”: “Pod”,
        • “metadata”: { “name”: “my-pod”} ,
        • “spec”: {
          • “containers”: [{
            • “name”: “nginx”,
            • “image”: “nginx:latest”
          • } ]
        • }
      • }
    • 发送请求:
      • curl -k -H “Authorization: Bearer $TOKEN”
        -H “Content-Type: application/json”
        -X POST
        –data-binary @pod.json
        ${ APISERVER} /api/v1/namespaces/default/pods
  • 编程方式访问(Python 官方客户端)
    • 安装依赖:pip3 install kubernetes
    • 示例脚本(列出命名空间):
      • from kubernetes import client, config config.load_kube_config() v1 = client.CoreV1Api() for ns in v1.list_namespace().items: print(ns.metadata.name)
  • 以上示例覆盖了命令行、HTTP 直接调用与 SDK 三种常见用法。

四 认证与授权要点

  • 认证方式
    • 支持 X.509 客户端证书Bearer TokenOIDC 等;Pod 内默认使用 ServiceAccountJWT 令牌(挂载于 /var/run/secrets/kubernetes.io/serviceaccount/token)。
  • 授权模型
    • 生产常用 RBAC:通过 Role/ClusterRoleRoleBinding/ClusterRoleBinding 精细控制对资源的 Verbs(如 get、list、watch、create、delete)。
  • 安全最佳实践
    • 遵循 最小权限原则,避免使用通配权限(如 [“*”])。
    • 使用 临时 KubeConfig短期 Token,并及时吊销泄露凭证。
    • API Server Endpoint 限制在 内网/VPC,必要时通过负载均衡与鉴权策略控制公网访问。
    • 定期 审计 集群访问权限与关键操作。

五 常见问题与排查

  • x509 证书错误
    • 现象:curl 报证书不受信任。
    • 处理:不要长期使用 -k;在 curl 中指定 CA 证书(–cacert),或使用 kubectl proxy 转发到本地 8001 端口。
  • 403 Forbidden
    • 现象:认证通过但无权限。
    • 处理:检查当前 Context/UserRBAC 绑定是否包含目标资源的对应 Verbs;必要时创建最小权限的 Role/ClusterRole 并绑定。
  • 获取 API 地址或 Token 失败
    • 现象:变量为空或命令报错。
    • 处理:确认 kubeconfig 已正确加载(kubectl config view),或使用 kubectl cluster-info 获取 APISERVER;Token 可通过 kubectl config view 或 ServiceAccount 挂载路径获取。
  • 在 Pod 内访问失败
    • 现象:连接被拒绝或 403。
    • 处理:确认 ServiceAccount 已创建并绑定合适 Role;检查 Pod 是否挂载了 tokenCA(默认会挂载);必要时为 Pod 指定 serviceAccountName。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos k8s API使用指南
本文地址: https://pptw.com/jishu/761221.html
JMeter在CentOS上的内存设置 CentOS环境下Kubernetes安装步骤是什么

游客 回复需填写必要信息