赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. ACK Serverless集群
  4. 开发参考
  5. 使用Kubernetes API

使用Kubernetes API

  • 开发参考
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

Kubernetes API通过HTTP提供基于资源(RESTful)的编程接口,支持通过标准HTTP请求(POST、PUT、PATCH、DELETE、GET)进行查询、创建、更新和删除各类集群资源。您可以通过curl命令或其他编程方式使用Kubernetes API。本文通过示例介绍如何通过curl命令管理Pod和Deployment。

获取集群访问凭证KubeConfig

  1. 登录容器服务管理控制台。

  2. 单击前往RAM进行授权进入云资源访问授权页面,然后单击同意授权。

    完成以上授权后,刷新控制台即可使用容器服务ACK。

  3. 在左侧导航栏单击集群列表。

  4. 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。

  5. 单击连接信息页签,查看集群访问凭证(KubeConfig),将KubeConfig文件保存到本地。

  6. 使用以下命令从KubeConfig文件中提取CA、Key和APIServer信息。

    cat  ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem
    cat  ./kubeconfig |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > ./client-key.pem
    APISERVER=`cat  ./kubeconfig |grep server | awk -F ' ' '{print $2}'`

使用curl命令操作Kubernetes API

执行以下命令查看当前集群中所有Namespaces。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces

通过curl命令管理Pod和Deployment常见示例操作如下。

Pod常见操作

执行以下命令查看default命名空间下的所有Pods。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods

执行以下命令创建Pod(JSON格式)。

cat nginx-pod.json
{
    "apiVersion":"v1",
    "kind":"Pod",
    "metadata":{
        "name":"nginx",
        "namespace": "default"
    },
    "spec":{
        "containers":[
            {
                "name":"nginx",
                "image":"nginx:alpine",
                "ports":[
                    {
                        "containerPort": 80
                    }
                ]
            }
        ]
    }
}

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods -X POST --header 'content-type: application/json' -d@nginx-pod.json

执行以下命令创建Pod(YAML格式)。

cat nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
spec:
  containers:
  - name: nginx
    image: nginx:alpine
    ports:
    - containerPort: 80

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods -X POST --header 'content-type: application/yaml' --data-binary @nginx-pod.yaml

执行以下命令查询Pod状态。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx

执行以下命令查询Pod日志。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx/log

执行以下命令查询Pod的metrics数据(通过metric-server API)。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/metrics.k8s.io/v1beta1/namespaces/default/pods/nginx

执行以下命令删除Pod。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/api/v1/namespaces/default/pods/nginx -X DELETE

Deployment常见操作

创建Deployment示例YAML文件如下。

cat nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image:  nginx:alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "2"
            memory: "4Gi"

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments -X POST --header 'content-type: application/yaml' --data-binary @nginx-deploy.yaml

执行以下命令查看Deployment。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments

执行以下命令更新Deployment(修改replicas副本数量)。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' -d '{"spec": {"replicas": 4}}'

执行以下命令更新Deployment(修改容器镜像)。

curl --cert ./client-cert.pem --key ./client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments/nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch+json' -d '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image": "nginx:1.7.9"}]}}}}'

其他编程方式操作Kubernetes API

  • 推荐您使用Kubernetes官方维护的SDK(包括Go、Python、Java等语言)。具体操作,请参见官方SDK。

  • 更多集群访问方式,请参见其他Kubernetes集群访问方式。

相关文章

CleanClusterUserPermissions - 清理指定用户在指定集群已下发KubeConfig凭据和RBAC权限 2025-04-18 14:51

如果您想针对部分有安全风险的KubeConfig进行清理和解除授权,您可以调用CleanClusterUserPermissions清理指定用户在指定集群已下发的KubeConfig凭据和RBAC权限。

CleanUserPermissions - 清理指定用户在所有集群已下发KubeConfig凭据和RBAC权限 2025-04-18 14:51

如果您想针对部分风险用户(已离职、账号冻结等)的KubeConfig进行清理并解除授权,您可以调用CleanUserPermissions清理指定用户已下发的KubeConfig凭据和RBAC权限。

CreateCluster - 创建集群 2025-04-18 14:51

您可以通过OpenAPI创建ACK集群,包含ACK托管集群、ACK Serverless集群,ACK Edge集群以及注册集群。创建集群时,您将完成集群信息、集群组件以及ACK相关云资源的配置。

CreateClusterDiagnosis - 发起集群诊断 2025-04-18 14:51

发起集群诊断。

DeleteCluster - 删除集群 2025-04-18 14:51

如果您的集群无需使用,请删除集群并选择是否删除或保留集群的相关资源。删除集群前,请手动清理工作负载(无状态、有状态、任务和定时任务),否则可能导致集群删除失败。

DescribeClusterDetail - 查询指定集群的信息 2025-04-18 14:50

您可以调用DescribeClusterDetail接口,根据集群ID查询指定集群的详细信息。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号