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

:Kubernetes APIの使用

最終更新日:Oct 29, 2024

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

kubeconfigファイルでのクラスター資格情報の取得

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

  2. クリックRAMコンソールに移動に行くためにクラウドリソースへのアクセス許可ページをクリックし、承認ポリシーの確認.

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

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

  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テンプレートは、配置を作成する方法の例です。

猫nginx-deploy.yaml
apiVersion: apps/v1
kind: 配置
メタデータ:
  名前: nginx-deploy
  ラベル:
    アプリ: nginx
spec:
  レプリカ:2
  セレクタ:
    matchLabels:
      アプリ:nginx
  template:
    metadata:
      ラベル:
        アプリ:nginx
    仕様:
      コンテナ:
      - name: nginx
        image:  nginx:alpine
        ポート:
        - containerPort: 80
        resources:
          requests:
            cpu: "2"
            メモリ: "4Gi"

カール-証明書。/client-cert.pem-キー。/client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments -X POST -- header 'content-type: application/yaml' -- data-binary @ nginx-deploy.yaml 

次のコマンドを実行して、配置を照会します。

カール-証明書。/client-cert.pem-キー。/client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployments

次のコマンドを実行して、レプリケートされたポッドの数を変更してデプロイを更新します。

カール-証明書。/client-cert.pem-キー。/client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployment /nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch + json'-d' {"spec": {"replicas": 4}}}'

次のコマンドを実行して、コンテナーイメージを変更してデプロイを更新します。

カール-証明書。/client-cert.pem-キー。/client-key.pem -k $APISERVER/apis/apps/v1/namespaces/default/deployment /nginx-deploy -X PATCH -H 'Content-Type: application/strategic-merge-patch + json'-d' {"spec": {"spec": {"containers": "nginx" 、"image" 1.7.9 "}]}}}}'