美文网首页
k8s node快速扩展

k8s node快速扩展

作者: 苏州运维开发 | 来源:发表于2019-11-21 15:57 被阅读0次

接着上篇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

相关文章

  • k8s node快速扩展

    接着上篇k8s ansible role快速部署一个小型集群后,开发基友又催我如何快速加节点,我只想对他说:麻辣烫...

  • k8s 网络插件

    k8s 网络插件 跨node 为了实现不同node上的Pod通信,必须实现以下两点: 对k8s集群中所有node上...

  • pod启动过程

    一、k8s 架构 我们在构建k8s集群的时候首先需要搭建master节点、其次需要创建node节点并将node节点...

  • k8s集群变更 clusterDomain

    k8s集群变更 clusterDomain变更部分变更k8s集群 clusterDomain 所有node节点: ...

  • 设置允许Pod调度到Master节点

    # kubectl describe node k8s |grep Taints Taints: ...

  • kubernetes node status 监控

    dashboard 监控项: 各个k8s集群所有node的状态,包括node NotReady/Unschedul...

  • K8S

    部署k8smaster 部署k8s node1 node2 (改node1为node2 共两处)

  • k8s openstack ccm 配置

    k8s集群内部每个node都会开启一个node port 走 ipvs adm 负载均衡器,后端ip都是node ...

  • k8s说明

    k8s核心组件 k8s架构图 k8s扩展功能 开启XSHELL的多终端执行命令 kubernetes在centos...

  • 每周阅读(4/16/2018)

    Monitoring in the Kubernetes era:要监控 k8s cluster/node/pod...

网友评论

      本文标题:k8s node快速扩展

      本文链接:https://www.haomeiwen.com/subject/eajtwctx.html