声明式操作实践

最近更新时间:2024-08-23 16:54:21

我的收藏

kubectl 支持操作

CRD 类型
操作项
MachineSet
创建原生节点池
kubectl create -f machineset-demo.yaml
查看原生节点池列表
kubectl get machineset
查看原生节点池 YAML 详情
kubectl describe ms machineset-name
删除原生节点池(包年包月节点池需要在控制台删除)
kubectl delete ms machineset-name
扩容原生节点池
kubectl scale --replicas=3 machineset/machineset-name
Machine
查看原生节点
kubectl get machine
查看原生节点 YAML 详情
kubectl describe ma machine-name
删除原生节点
kubectl delete ma machine-name
HealthCheckPolicy
创建故障检测自愈规则
kubectl create -f demo-HealthCheckPolicy.yaml
查看故障自愈规则列表
kubectl get HealthCheckPolicy
查看故障自愈规则 YAML 详情
kubectl describe HealthCheckPolicy HealthCheckPolicy-name
删除故障自愈规则
kubectl delete HealthCheckPolicy HealthCheckPolicy-name



通过 YAML 使用 CRD

MachineSet

原生节点池参数填写可参考 原生节点创建参数说明
apiVersion: node.tke.cloud.tencent.com/v1beta1
kind: MachineSet
spec:
autoRepair: false #故障自愈开关
displayName: test
healthCheckPolicyName: #自愈规则名称
instanceTypes: #机型规格
- S5.MEDIUM2
replicas: 1 #节点数
scaling: #自动扩缩容策略
createPolicy: ZonePriority
maxReplicas: 1
subnetIDs: #节点池子网
- subnet-nnwwb64w
template:
metadata:
annotations:
node.tke.cloud.tencent.com/machine-cloud-tags: '[{"tagKey":"xxx","tagValue":"xxx"}]' #腾讯云标签
spec:
displayName: tke-np-mpam3v4b-worker #可自定义显示名称
metadata:
annotations:
annotation-key1: annotation-value1 #自定义annotations
labels:
label-test-key: label-test-value #自定义labels
providerSpec:
type: Native
value:
dataDisks: #数据盘参数
- deleteWithInstance: true
diskID: ""
diskSize: 50
diskType: CloudPremium
fileSystem: ext4
mountTarget: /var/lib/containerd
instanceChargeType: PostpaidByHour #节点付费模式
keyIDs: #节点登录SSH参数
- skey-xxx
lifecycle: #自定义脚本
postInit: echo "after node init"
preInit: echo "before node init"
management: #management参数设置,包含kubelet\\kernel\\nameserver\\hostname
securityGroupIDs: #安全组配置
- sg-xxxxx
systemDisk: #系统盘配置
diskSize: 50
diskType: CloudPremium
runtimeRootDir: /var/lib/containerd
taints: #污点 非必填
- effect: NoExecute
key: taint-key2
value: value2
type: Native





kubectl 操作 demo

MachineSet

1. 执行命令kubectl create -f machineset-demo.yaml根据上述 YAML 创建 MachineSet:



2. 根据命令kubectl get machineset查看 MachineSet np-pjrlok3w 状态。



此时控制台上已出现对应节点池,节点在创建中:



3. 根据命令kubectl describe machineset np-pjrlok3w查看 MachineSet np-pjrlok3w 描述:



4. 根据命令 kubectl scale --replicas=2 machineset/np-pjrlok3w 执行节点池扩缩容:


5. 根据命令kubectl delete ms np-pjrlok3w 删除节点池。



Machine

1. 根据命令kubectl get machine查看 Machine 列表:


此时控制台上已存在对应节点:



2. 根据命令kubectl describe ma np-14024r66-nv8bk查看 Machine np-14024r66-nv8bk 描述:



3. 根据命令kubectl delete ma np-14024r66-nv8bk 删除节点。
说明:
如果没有调整节点池期望节点数而直接删除节点,节点池会检测到实际节点数不足以满足声明式节点数量,然后会创建一个新节点并将其加入节点池。因此,我们推荐按照以下方式进行节点删除操作:
调整期望节点数:kubectl scale --replicas=1 machineset/np-xxxxx
删除对应节点:kubectl delete machine np-xxxxxx-dtjhd
针对包年包月类型的节点,因为涉及到节点销毁退费,因此无法直接通过 kubectl 删除。