Kubernetes APIは、POST、PUT、PATCH、DELETE、GETなどの標準のHTTPメソッドをサポートする、HTTPによって提供されるリソースベース (RESTful) のプログラミングインターフェイスです。 これらの方法を使用して、クラスターリソースを照会、作成、更新、および削除できます。 cURLコマンドまたはその他のプログラミング方法を実行して、Kubernetes APIを呼び出すことができます。 このトピックでは、cURLコマンドを使用してポッドとデプロイメントを管理する方法について説明します。
kubeconfigファイルでのクラスター資格情報の取得
ACKコンソールにログインします。
クリックRAMコンソールに移動に行くためにクラウドリソースへのアクセス許可ページをクリックし、承認ポリシーの確認.
上記の認証が完了したら、コンソールを更新してACKを使用します。
ACKコンソールの左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。 クラスターの詳細ページが表示されます。
クラスターの詳細ページで、[接続情報] タブをクリックします。 クラスターの資格情報はkubeconfigファイルで確認できます。 kubeconfigファイルの内容をコピーし、オンプレミスマシンに保存します。
次のコマンドを実行して、認証局 (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 "}]}}}}'