[关闭]
@zhangsiming65965 2019-07-23T06:15:17.000000Z 字数 3381 阅读 186

Kubespray部署并配置k8s集群

K8S

---Author:张思明 ZhangSiming

---Mail:siming_zhang@shannonai.com

---QQ:1030728296


image_1dg51sn3htq184miv8eeu19i59.png-47.7kB

kubespray是一款自动化部署kubernetes集群的工具;利用ansible-playbook可以实现一键部署整个集群,无需额外操作;并且具有一键扩容、一键删节点、一键重置集群的功能,十分强大便捷。

一、前提条件

1.配置好ansible主机到其他节点的ssh秘钥

  1. 生成秘钥:ssh-keygen -f ~/.ssh/id_rsa -t rsa -P ""
  2. 分发秘钥:ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@ALLCLUSTERIP

2.给执行用户添加sudo权限(/etc/sudoers)
3.安装pip3环境

  1. sudo apt-get install -y python3-pip
  2. sudo pip3 install --upgrade pip
  3. sudo pip install --upgrade cryptography
  4. (hash -d(r) pip3)

4.配置harbor的DNS,并登陆harbor

ubuntu18.04采用/etc/systemd/resolved.conf管理DNS,修改其中的DNS项之后重启"systemd-resolved"即可永久生效。

  1. sudo sed -i 's#\#DNS#DNS=172.31.15.168#g' /etc/systemd/resolved.conf
  2. sudo systemctl restart systemd-resolved
  3. docker login harbor.shannonai.com

5.将缓存下来的releases目录(需要的安装包),放到/home/ubuntu/releases位置,已经固定好缓存位置在这里
6.克隆代码,准备部署kubernetes集群

  1. git clone https://git.shannonai.com/zhangsiming/kubespray.git

二、开始部署集群

1.安装依赖(ansible等...)

  1. cd kubespray
  2. sudo pip install -r requirements.txt

2.配置集群规模(配置ansible的hosts.yml文件)

  1. cd kubespray
  2. cp -rfp inventory/mycluster inventory/shannon-k8s-testcluster
  3. #"ALLCLUSTERIP"写所有的集群ip地址,空格分隔
  4. declare -a IPS=(ALLCLUSTERIP)
  5. #在"inventory/shannon-k8s-testcluster/hosts.yml"配置好集群规模信息
  6. CONFIG_FILE=inventory/shannon-k8s-testcluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
  7. #修改k8s集群的主机名为本身的主机名
  8. bash init/hostname-change.sh 主机名1 主机名2

部署k8s集群的规模,比如哪个节点做master哪个做etcd之类的,可以自行前往hosts.yml文件修改。

3.开始部署集群

  1. cd kubespray
  2. ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root cluster.yml

4.安装kubectl

kubespray默认所有部署的master节点都装有kubectl工具,node节点或者其他服务器如果想使用kubectl,可以输入以下命令来安装kubectl工具:

  1. curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
  2. sudo mv kubectl /usr/local/bin
  3. sudo chmod 777 /usr/local/bin/kubectl

5.初始化配置集群

下载好的代码目录的init子目录下会有一个名为"Cfg-after-deploy.sh"的部署脚本,它会自动配置好:
1.kubectl的admin-config;
2.k8s-dashboard的admin-token;
3.本地安装helm并初始化dev、develop、shannon命名空间的tiller;
4.在~/kubespray/init/user目录下生成只有上述三个命名空间的权限的devuser-kubeconfig;
5.部署好rbac授权的traefik;
6.部署好上述三个命名空间连接harbor的secret。

  1. cd kubespray
  2. sudo bash init/Cfg-after-deploy.sh

三、集群控制

1.部署集群:

  1. #需要事先配置好"hosts.yml"
  2. ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root cluster.yml

2.删除node节点:

  1. #无需事先配置好"hosts.yml","--extra-vars"参数指定
  2. ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root remove-node.yml --extra-vars "node=主机名"

3.扩容node节点:

  1. #需要事先配置好"hosts.yml"
  2. ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root scale.yml

4.重置集群:

恢复到初始状态。

  1. ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root reset.yml

附:需要的镜像(目前都已上传"harbor.shannonai.com/test")

  1. harbor.shannonai.com/test/cluster-proportional-autoscaler-amd64:1.4.0
  2. harbor.shannonai.com/test/k8s-dns-node-cache:1.15.1
  3. harbor.shannonai.com/test/kube-apiserver:v1.14.3
  4. harbor.shannonai.com/test/kube-controller-manager:v1.14.3
  5. harbor.shannonai.com/test/kube-proxy:v1.14.3
  6. harbor.shannonai.com/test/kubernetes-dashboard-amd64:v1.10.1
  7. harbor.shannonai.com/test/kube-scheduler:v1.14.3
  8. harbor.shannonai.com/test/pause:3.1
  9. harbor.shannonai.com/test/tiller:v2.11.0
  10. harbor.shannonai.com/test/cni:v3.7.3
  11. harbor.shannonai.com/test/kube-controllers:v3.7.3
  12. harbor.shannonai.com/test/node:v3.7.3
  13. harbor.shannonai.com/test/coredns:1.5.0
  14. harbor.shannonai.com/test/nginx:1.15
  15. harbor.shannonai.com/test/etcd:v3.3.10
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注