本文介紹kubectl-sae工具的使用方法和常用命令,幫助您快速入門并實現一些常見的業務需求。
前提條件
已安裝kubectl-sae工具,并配置AccessKey ID、AccessKey Secret、應用部署地域,詳見安裝與配置kubectl-sae工具。
管理命名空間
kubectl-sae工具支持創建、查看、刪除命名空間,不支持更新命名空間。
創建命名空間
編寫文件名為
namespace.yaml
的文件,示例文件的內容如下,其中包含命名空間的配置信息。apiVersion: v1 kind: Namespace metadata: annotations: sae.aliyun.com/vpc-id: ${vpc-id} # 請將${vpc-id}替換為命名空間關聯的VPC ID,格式為vpc-xxxxxxxxxxxxxxxxxxxxx name: ${namespace} # 請將${namespace}替換為命名空間名稱 spec: {}
在
namespace.yaml
文件所在路徑執行以下命令,實現創建命名空間。kubectl-sae apply -f namespace.yaml
查看命名空間
執行以下命令,查看指定應用部署地域下已有的命名空間。
kubectl-sae get ns
輸出示例如下:
NAME STATUS REGION
default Active cn-beijing
testns Active cn-beijing
字段解釋如下:
字段 | 說明 |
NAME | 命名空間的名稱,default 表示默認命名空間。 |
STATUS | 命名空間的狀態,Active 表示可用。 |
REGION | 命名空間所在地域。 |
刪除命名空間
執行以下命令,刪除指定命名空間。
kubectl-sae delete ns ${namespace}
# ${namespace}為命名空間的名稱
管理應用
kubectl-sae工具支持創建、查看、更新、刪除應用。
創建應用
編寫文件名為
deployment.yaml
的文件,示例文件的內容如下,其中包含應用的配置信息。apiVersion: apps/v1 kind: Deployment metadata: name: ${deployment-name} # 請將${deployment-name}替換為您的應用名稱 spec: replicas: 2 # 表示應用實例的數量 selector: matchLabels: sae.aliyun.com/app-name: ${deployment-name} # 請將${deployment-name}替換為您的應用名稱 template: metadata: labels: sae.aliyun.com/app-name: ${deployment-name} # 請將${deployment-name}替換為您的應用名稱 spec: containers: - name: main # 建議將containers的名稱固定設置為main,避免沖突。 image: registry.openanolis.cn/openanolis/nginx:1.14.1-8.6 # 本例以部署nginx鏡像為例
在
deployment.yaml
文件所在路徑執行以下命令,實現在默認命名空間下創建應用。kubectl-sae apply -f deployment.yaml
執行以下命令,查看已創建的應用的信息。當輸出結果中STATE值為RUNNING時,表示應用正在運行。
kubectl-sae get deployment ${deployment-name} # ${deployment-name}為應用名稱
執行以下命令,查看已創建的應用的實例信息。
kubectl-sae get pods -l sae.aliyun.com/app-name=${deployment-name} # ${deployment-name}為應用名稱
查看應用列表
執行以下命令,查看指定命名空間下已有的應用。
kubectl-sae get deployment -n ${namespace}
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
輸出示例如下:
NAME READY AVAILABLE TYPE STATE LANGUAGE AGE
test-yaml 3/3 3 Image RUNNING java 6d1h
sc-c 2/2 2 Image RUNNING java 13d
sc-b 2/2 2 Image RUNNING java 13d
sc-a 1/1 1 Image RUNNING java 13d
字段解釋如下:
字段 | 說明 |
NAME | 應用的名稱。 |
READY | 已準備就緒的應用實例數 / 期望部署的目標實例數,準備就緒是指已通過Readiness探針檢查。 |
AVAILABLE | 當前正在運行的應用實例數。 |
TYPE | 應用的部署方式,Image表示通過鏡像部署。 |
STATE | 應用的狀態,Running表示應用正在運行。 |
LANGUAGE | 應用的技術棧語言。 |
AGE | 應用的存在時長。 |
查看應用詳情
kubectl-sae工具支持使用get
或describe
命令查看應用詳情。
通過get命令查看應用配置信息
執行以下命令,查看應用的配置信息。
kubectl-sae get deployment ${deployment-name} -o yaml -n ${namespace}
# ${deployment-name}為應用名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
通過describe命令查看應用詳情
執行以下命令,查看應用詳情。
kubectl-sae describe deployment ${deployment-name} -n ${namespace}
# ${deployment-name}為應用名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
更新應用
kubectl-sae工具支持使用scale
,edit
或apply
命令更新應用。
通過scale命令實現應用手動擴縮容
執行以下命令,實現應用手動擴縮容。
kubectl-sae scale deployment ${deployment-name} -n ${namespace} --replicas=${pod-num}
# ${deployment-name}為應用名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
# ${pod-num}為期望的應用實例數
通過edit命令在線編輯應用配置信息
執行以下命令,將會以YAML文件的形式打開指定應用的配置信息。
kubectl-sae edit deployment ${deployment-name} -n ${namespace} # ${deployment-name}為應用名稱 # ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
在打開的YAML文件中按需修改配置信息,保存并關閉文件,等待配置信息變更完成。
通過apply命令實現按照YAML配置文件更新應用
修改已部署的應用的配置文件deployment.yaml
,在配置文件所在路徑執行以下命令,實現應用配置信息的變更。
kubectl-sae apply -f deployment.yaml
刪除應用
執行以下命令,刪除指定應用。
kubectl-sae delete deployment ${deployment-name} -n ${namespace}
# ${deployment-name}為應用名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
管理負載均衡SLB
負載均衡SLB對應Kubernetes的service資源類型。kubectl-sae工具支持創建、查看、更新、解綁負載均衡SLB。
為應用創建新的負載均衡SLB
編寫文件名為
svc.yaml
的文件,示例文件的內容如下,其中包含負載均衡SLB的配置信息。apiVersion: v1 kind: Service metadata: name: internet-${deployment-name} # 請將${deployment-name}替換為您的應用名稱 # internet表示設置公網訪問的SLB,如果需要設置私網訪問的SLB,請將其替換為intranet spec: ports: - name: port-80 port: 80 # 表示用戶訪問應用的端口,請根據實際需求替換 protocol: TCP targetPort: 80 # 表示容器中對外提供服務的端口,請根據實際需求替換 selector: sae.aliyun.com/app-name: ${deployment-name} # 請將${deployment-name}替換為您的應用名稱
在
svc.yaml
文件所在路徑執行以下命令,實現為應用創建新的負載均衡SLB。kubectl-sae apply -f svc.yaml
將應用綁定到已有的負載均衡SLB
編寫文件名為
svc.yaml
的文件,示例文件的內容如下,其中包含負載均衡SLB的配置信息。apiVersion: v1 kind: Service metadata: annotations: sae.aliyun.com/loadbalancer-id: ${your-slb-id} # 請將${your-slb-id}替換為您的SLB ID name: internet-${deployment-name} # 請將${deployment-name}替換為您的應用名稱 # internet表示設置公網訪問的SLB,如果需要設置私網訪問的SLB,請將其替換為intranet spec: ports: - name: port-80 port: 80 # 表示用戶訪問應用的端口,請根據實際需求替換 protocol: TCP targetPort: 80 # 表示容器中對外提供服務的端口,請根據實際需求替換 selector: sae.aliyun.com/app-name: ${deployment-name} # 請將${deployment-name}替換為您的應用名稱
在
svc.yaml
文件所在路徑執行以下命令,實現將應用綁定到已有的負載均衡SLB。kubectl-sae apply -f svc.yaml
查看負載均衡SLB列表
執行以下命令,查看已有的負載均衡SLB列表。
kubectl-sae get service -l sae.aliyun.com/app-name=${deployment-name} -n ${namespace}
# ${deployment-name}為應用的名稱,如果不通過-l參數指定應用名稱,則默認顯示所有應用綁定的負載均衡SLB
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
輸出示例如下:
NAME TYPE EXTERNAL-IP PORT(S) BOUND AGE
internet-myapp LoadBalancer xxx.x.xx.xx 80/TCP myapp 6d20h
intranet-myapp LoadBalancer xx.xx.xxx.xx 80/TCP myapp 4d1h
字段解釋如下:
字段 | 說明 |
NAME | Service的名稱,格式為 對于 |
TYPE | Service的類型,LoadBalancer表示負載均衡SLB。 |
EXTERNAL-IP | 負載均衡SLB的IP地址。 |
PORT(S) | 負載均衡SLB的端口映射信息。 |
BOUND | 負載均衡SLB綁定的應用名稱。 |
AGE | Service的存在時長。 |
查看負載均衡SLB詳情
執行以下命令,查看負載均衡SLB的配置信息。
kubectl-sae get service ${service-name} -n ${namespace} -o yaml
# ${service-name}為service名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
更新負載均衡SLB
kubectl-sae工具支持使用edit
或apply
命令更新負載均衡SLB。
通過edit命令在線編輯負載均衡SLB配置信息
執行以下命令,將會以YAML文件的形式打開指定負載均衡SLB的配置信息。
kubectl-sae edit service ${service-name} -n ${namespace} # ${service-name}為service名稱 # ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
在打開的YAML文件中按需修改配置信息,保存并關閉文件,等待配置信息變更完成。
通過apply命令實現按照YAML配置文件更新負載均衡SLB
修改已有的負載均衡SLB的配置文件svc.yaml
。在配置文件所在路徑執行以下命令,實現負載均衡SLB配置信息的變更。
kubectl-sae apply -f svc.yaml
解綁負載均衡SLB
執行以下命令,解綁指定的負載均衡SLB。
kubectl-sae delete service ${service-name} -n ${namespace}
# ${service-name}為service名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
管理ConfigMap
kubectl-sae工具支持創建、查看、更新、刪除ConfigMap。ConfigMap可以作為容器的環境變量被引用,或作為文件掛載到容器中。
創建ConfigMap
編寫文件名為
cm.yaml
的文件,示例文件的內容如下,其中包含ConfigMap的配置信息。apiVersion: v1 kind: ConfigMap metadata: name: database-configmap # 表示ConfigMap的名稱 namespace: default # 表示ConfigMap所在的命名空間 data: #表示ConfigMap中包含的鍵值對信息 database: mysql database_uri: mysql://localhost:2309
在
cm.yaml
文件所在路徑執行以下命令,實現在默認命名空間下創建名稱為database-configmap
的ConfigMap。kubectl-sae apply -f cm.yaml
查看地域下ConfigMap列表
執行以下命令,查看地域下已有的ConfigMap列表。
kubectl-sae get configmap -A
輸出示例如下:
NAMESPACE NAME DATA AGE
default nacos 1 69d
test test-config 2 10d
字段解釋如下:
字段 | 說明 |
NAMESPACE | ConfigMap所在的命名空間。 |
NAME | ConfigMap的名稱。 |
DATA | ConfigMap中數據條目數。 |
AGE | ConfigMap的存在時長。 |
查看命名空間下ConfigMap列表
執行以下命令,查看命名空間下已有的ConfigMap列表。
kubectl-sae get configmap -n ${namespace}
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
查看ConfigMap具體配置
執行以下命令,查看指定ConfigMap的具體配置。
kubectl-sae get cm ${cm-name} -n ${namespace} -o yaml
# ${cm-name}為ConfigMap的名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
引用ConfigMap作為容器環境變量
以下示例文件展示了引用ConfigMap作為容器環境變量的方法。引用方式分為部分引用和全部引用,請根據您的需求進行選擇。
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-configmap
namespace: default
spec:
replicas: 1
selector:
matchLabels:
sae.aliyun.com/app-name: test-configmap
template:
metadata:
creationTimestamp: null
labels:
sae.aliyun.com/app-name: test-configmap
spec:
containers:
- args:
- /home/admin/start.sh
command:
- /bin/bash
env: ### 以下為部分引用的示例
- name: database # 表示容器中的環境變量名
valueFrom:
configMapKeyRef: # 表示環境變量的值引用database-configmap中的database值
key: database
name: database-configmap
envFrom: ### 以下為全部引用的示例
- configMapRef: # 表示全部引用other-configmap中的鍵值對作為容器中的環境變量
name: other-configmap
name: main
image: registry.cn-shenzhen.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0
imagePullPolicy: Always
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
restartPolicy: Always
terminationGracePeriodSeconds: 10
將ConfigMap作為文件掛載到容器中
以下示例文件展示了將ConfigMap作為文件掛載到容器中的方法。
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-configmap
namespace: default
spec:
replicas: 1
selector:
matchLabels:
sae.aliyun.com/app-name: test-configmap
template:
metadata:
labels:
sae.aliyun.com/app-name: test-configmap
spec:
containers:
- args:
- /home/admin/start.sh
command:
- /bin/bash
name: main
image: registry.cn-shenzhen.aliyuncs.com/sae-serverless-demo/sae-demo:microservice-java-provider-v1.0
imagePullPolicy: Always
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
volumeMounts:
- mountPath: /tmp/nacos # 表示ConfigMap文件的掛載路徑
name: my-volume # 表示掛載的volume名稱為my-volume
volumes: # 表示基于nacos-configmap聲明my-volume
- configMap:
name: nacos-configmap
name: my-volume
restartPolicy: Always
terminationGracePeriodSeconds: 10
更新ConfigMap
kubectl-sae工具支持使用edit
或apply
命令更新ConfigMap。
通過edit命令在線編輯ConfigMap
執行以下命令,將會以YAML文件的形式打開指定ConfigMap的配置信息。
kubectl-sae edit cm ${cm-name} -n ${namespace} # ${cm-name}為ConfigMap名稱 # ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間
在打開的YAML文件中按需修改配置信息,保存并關閉文件,等待配置信息變更完成。
通過apply命令實現按照YAML配置文件更新ConfigMap
修改已有的ConfigMap的配置文件cm.yaml
。在配置文件所在路徑執行以下命令,實現ConfigMap配置信息的變更。
kubectl-sae apply -f cm.yaml
刪除ConfigMap
執行以下命令,刪除指定的ConfigMap。
kubectl-sae delete cm ${cm-name} -n ${namespace}
# ${cm-name}為ConfigMap名稱
# ${namespace}為命名空間的名稱,如果不通過-n參數指定命名空間,則默認使用default命名空間