本文介绍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命名空间