k8s node快速扩展

接着上篇k8s ansible role快速部署一个小型集群后,开发基友又催我如何快速加节点,我只想对他说:麻辣烫得升级成海底捞!
方案一:打通ansible到新增节点的免秘钥,然后将这些新增节点跑下os-init,k8s-node两个role任务就OK了
例如:

vim /etc/ansible/hosts
[newnode]
172.31.33.134
172.31.33.135

cat new-node.yaml
- name: install k8s-node
  hosts: newnode
  roles:
    - os-init
    - k8s-node

ansible-playbook new-node.yaml

即可完成拓展

方案二:packer + 镜像 + terraform
镜像制作:建议直接在运行实例中克隆一份镜像,然后用packer进行处理
比如用node-1节点制作镜像,需要执行以下操作

chmod +x /etc/rc.d/rc.local
vim /etc/rc.d/rc.local
#!/bin/bash

# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES

#

# It is highly advisable to create own systemd services or udev rules

# to run scripts during boot instead of using this file.

#

# In contrast to previous versions due to parallel execution during boot

# this script will NOT be run after all other services.

#

# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure

# that this script will be executed during boot.



touch /var/lock/subsys/local

echo never >> /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/defrag

#清理依赖相关配置项

rm -f /etc/kubernetes/cert/kubelet-bootstrap.kubeconfig

rm -f /data/k8s/kubelet && mkdir -p /data/k8s/kubelet/log

rm -f /etc/kubernetes/cert/kubelet-client*

rm -f /etc/kubernetes/cert/kubelet-server*

rm -rf /etc/cni/net.d/*





sed -i "s#.*hostnameOverride:.*#hostnameOverride: $(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}')#g" /etc/kubernetes/cert/kube-proxy-config.yaml

sed -i "s#bindAddress:.*#bindAddress: $(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}')#g" /etc/kubernetes/cert/kube-proxy-config.yaml

sed -i "s#healthzBindAddress:.*#healthzBindAddress: $(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}'):10256#g" /etc/kubernetes/cert/kube-proxy-config.yaml

sed -i "s#metricsBindAddress:.*#metricsBindAddress: $(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}'):10249#g" /etc/kubernetes/cert/kube-proxy-config.yaml



sed -i "s#.*hostname.*# --hostname-override=$(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}') \\\#g" /etc/systemd/system/kubelet.service

sed -i "s#address:.*#address: \"$(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}')\"#g" /etc/kubernetes/cert/kubelet-config.yaml

sed -i "s#healthzBindAddress:.*#healthzBindAddress: \"$(ip addr |grep inet |grep -v inet6 |grep eth0|awk '{print $2}' |awk -F '/' '{print $1}')\"#g" /etc/kubernetes/cert/kubelet-config.yaml



#token 一天过期,要重新生成token

hh=$(hostname)

#echo $hh

BOOTSTRAP_TOKEN=$(kubeadm token create    --description kubelet-bootstrap-token    --groups system:bootstrappers:${hh}   --kubeconfig /root/.kube/config)

#echo $BOOTSTRAP_TOKEN



kubectl config set-cluster kubernetes \

   --certificate-authority=/etc/kubernetes/cert/ca.pem \

   --embed-certs=true \

   --server=https://172.31.33.118:6443 \

   --kubeconfig=/etc/kubernetes/cert/kubelet-bootstrap.kubeconfig

kubectl config set-credentials kubelet-bootstrap \

   --token=${BOOTSTRAP_TOKEN} \

   --kubeconfig=/etc/kubernetes/cert/kubelet-bootstrap.kubeconfig

kubectl config set-context default \

   --cluster=kubernetes \

   --user=kubelet-bootstrap \

   --kubeconfig=/etc/kubernetes/cert/kubelet-bootstrap.kubeconfig

kubectl config use-context default --kubeconfig=/etc/kubernetes/cert/kubelet-bootstrap.kubeconfig

systemctl daemon-reload && systemctl restart kubelet kube-proxy

kubectl get csr | grep Pending | awk '{print $1}' | xargs kubectl certificate approve 

我这里是阿里云,克隆完后,查询镜像ID,后续要用


image.png

最后用terraform采用这个镜像来批量创建服务器,服务器运行后能自动加入集群,这样镜像制作完成后,只需要改下terraform
创建服务器的数量配置,即可快速的实现横向伸缩node集群。terraform 配置如下

vim ecs.tf

resource "alicloud_instance" "instances" {

#创建ecs数量

 count = 2   

 # cn-beijing

 availability_zone = "cn-qingdao-c"

 security_groups  = "${data.alicloud_instances.instances_ds.instances.0.security_groups}"



 # series III

 instance_type       = "${data.alicloud_instances.instances_ds.instances.1.instance_type}"

 system_disk_category    = "cloud_efficiency"

#克隆镜像的ID

 image_id          = "m-m5e8h7yfel36tbjhcnox"

 host_name         = "node-20"

 vswitch_id         = "${data.alicloud_instances.instances_ds.instances.0.vswitch_id}"

 internet_max_bandwidth_out = 0

# internet_charge_type    = "PayByBandwidth"

}

terraform apply 运行结果如下:


image.png

查询节点


image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容