使用阿里云弹性伸缩服务。实现弹性伸缩创建服务器后能自动加入k8s集群中

一、流程图

二、实现

1、在master端创建一个永久的token

[root@master ~]# kubeadm   token  create  --ttl 0 --print-join-command  
kubeadm join 172.16.208.202:6443 --token d1m9gy.ou3983qtvy6nih9t     --discovery-token-ca-cert-hash sha256:d4fd822875b79c10f846a5510208c9acc423e4b1a72f13b53bdd88203bc44dd3 
[root@master ~]# kubeadm  token list 
TOKEN                     TTL         EXPIRES   USAGES                   DESCRIPTION                                                EXTRA GROUPS
d1m9gy.ou3983qtvy6nih9t   <forever>   <never>   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token
dv8qs9.ytcmgshggna7xp4y   23h         2021-01-30T10:36:20+08:00   authentication,signing   The default bootstrap token generated by 'kubeadm init'.   system:bootstrappers:kubeadm:default-node-token

2、node节点将环境配置好,只预留join步骤

3、创建join脚本

[root@node-i-bp19m1ido52upii324z2 ~]# mkdir /usr/local/scripts -p
[root@node-i-bp19m1ido52upii324z2 ~]# cat /usr/local/scripts/kubeadm_join.sh 
#!/bin/bash

source /etc/profile
ECS_ID=`curl http://100.100.100.200/latest/meta-data/instance-id`
HOSTNAME=node-${ECS_ID}

#修改主机名
hostnamectl  set-hostname ${HOSTNAME}

#join
kubeadm join 172.16.208.202:6443 --token d1m9gy.ou3983qtvy6nih9t     --discovery-token-ca-cert-hash sha256:d4fd822875b79c10f846a5510208c9acc423e4b1a72f13b53bdd88203bc44dd3 

> /var/spool/cron/root
rm -f $0 

4、将脚本写入crond中,设置重启执行(写入/etc/rc.d/rc.local的话,join不会成功)

[root@node-i-bp19m1ido52upii324z2 ~]# echo "@reboot /bin/bash  /usr/local/scripts/kubeadm_join.sh" >> /var/spool/cron/root
[root@node-i-bp19m1ido52upii324z2 ~]# crontab  -l
@reboot /bin/bash  /usr/local/scripts/kubeadm_join.sh

5、拍摄快照并制作成镜像

 

 6、创建弹性伸缩服务,镜像选择为刚才制作的镜像

其它配置根据情况设置

7、查看自动伸缩创建服务器时,服务器自动加入k8s集群

[root@master ~]# kubectl get node  -w
NAME     STATUS   ROLES                  AGE    VERSION
master   Ready    control-plane,master   4h1m   v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 0s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 0s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 0s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 0s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 0s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 6s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 6s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   NotReady   <none>                 7s     v1.20.2
node-i-bp19m1ido52usoxvpo8l   Ready      <none>                 10s    v1.20.2
node-i-bp19m1ido52usoxvpo8l   Ready      <none>                 10s    v1.20.2
master                        Ready      control-plane,master   4h2m   v1.20.2
[root@master ~]# kubectl get node 
NAME                          STATUS   ROLES                  AGE    VERSION
master                        Ready    control-plane,master   4h4m   v1.20.2
node-i-bp19m1ido52usoxvpo8l   Ready    <none>                 104s   v1.20.2

  

原文地址:https://www.cnblogs.com/zhangb8042/p/14344797.html