日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用Kubernetes API

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