すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Kubernetes API の使用

最終更新日:Jul 03, 2025

Kubernetes API は、HTTP を介して提供されるリソースベース (RESTful) のプログラミングインターフェイスであり、POST、PUT、PATCH、DELETE、GET などの標準 HTTP メソッドをサポートしています。これらのメソッドを使用して、クラスターリソースのクエリ、作成、更新、および削除を行うことができます。 cURL コマンドまたはその他のプログラミングメソッドを実行することで、Kubernetes API を呼び出すことができます。このトピックでは、cURL コマンドを使用してポッドとデプロイメントを管理する方法について、例を挙げて説明します。

kubeconfig ファイルでクラスタークレデンシャルを取得する

  1. ACK コンソール にログインします。

  2. 警告が表示された場合は、[RAM コンソールに移動] をクリックして RAM クイック承認 ページに移動し、[承認] をクリックします。

    上記の承認が完了したら、コンソールを更新して ACK を使用します。

  3. 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  4. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、[アクション] 列の [詳細] をクリックします。クラスターの詳細ページが表示されます。

  5. クラスターの詳細ページで、[接続情報] タブをクリックします。 [kubeconfig] ファイルにクラスタークレデンシャルがあります。 [kubeconfig] ファイルの内容をコピーし、オンプレミスマシンに保存します。

  6. 次のコマンドを実行して、認証局 (CA)、秘密鍵、および API サーバーに関する情報を取得します。

    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 を呼び出す

次のコマンドを実行して、クラスター内のすべての名前空間をクエリします。

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

cURL コマンドを使用してポッドとデプロイメントを管理するための一般的な操作は次のとおりです。

ポッドを管理するための一般的な操作

次のコマンドを実行して、デフォルトの名前空間内のすべてのポッドをクエリします。

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

次のコマンドを実行して、ポッドを作成します (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

次のコマンドを実行して、ポッドを作成します (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

次のコマンドを実行して、ポッドのステータスをクエリします。

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

次のコマンドを実行して、ポッドのログデータをクエリします。

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

metric-server API を使用して、次のコマンドを実行し、ポッドのメトリックを収集します。

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

次のコマンドを実行して、ポッドを削除します。

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

デプロイメントを管理するための一般的な操作

次の 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

次のコマンドを実行して、デプロイメントをクエリします。

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

複製されたポッドの数を変更することで、デプロイメントを更新するには、次のコマンドを実行します。

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}}'

コンテナイメージを変更することで、デプロイメントを更新するには、次のコマンドを実行します。

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"}]}}}}'