@zhangsiming65965
2019-07-23T06:15:17.000000Z
字数 3381
阅读 186
K8S
kubespray是一款自动化部署kubernetes集群的工具;利用ansible-playbook可以实现一键部署整个集群,无需额外操作;并且具有一键扩容、一键删节点、一键重置集群的功能,十分强大便捷。
1.配置好ansible主机到其他节点的ssh秘钥
生成秘钥:ssh-keygen -f ~/.ssh/id_rsa -t rsa -P ""
分发秘钥:ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@ALLCLUSTERIP
2.给执行用户添加sudo权限(/etc/sudoers)
3.安装pip3环境
sudo apt-get install -y python3-pip
sudo pip3 install --upgrade pip
sudo pip install --upgrade cryptography
(hash -d(r) pip3)
4.配置harbor的DNS,并登陆harbor
ubuntu18.04采用
/etc/systemd/resolved.conf
管理DNS,修改其中的DNS项之后重启"systemd-resolved"即可永久生效。
sudo sed -i 's#\#DNS#DNS=172.31.15.168#g' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved
docker login harbor.shannonai.com
5.将缓存下来的releases目录(需要的安装包),放到/home/ubuntu/releases
位置,已经固定好缓存位置在这里
6.克隆代码,准备部署kubernetes集群
git clone https://git.shannonai.com/zhangsiming/kubespray.git
1.安装依赖(ansible等...)
cd kubespray
sudo pip install -r requirements.txt
2.配置集群规模(配置ansible的hosts.yml文件)
cd kubespray
cp -rfp inventory/mycluster inventory/shannon-k8s-testcluster
#"ALLCLUSTERIP"写所有的集群ip地址,空格分隔
declare -a IPS=(ALLCLUSTERIP)
#在"inventory/shannon-k8s-testcluster/hosts.yml"配置好集群规模信息
CONFIG_FILE=inventory/shannon-k8s-testcluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
#修改k8s集群的主机名为本身的主机名
bash init/hostname-change.sh 主机名1 主机名2
部署k8s集群的规模,比如哪个节点做master哪个做etcd之类的,可以自行前往hosts.yml文件修改。
3.开始部署集群
cd kubespray
ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root cluster.yml
4.安装kubectl
kubespray默认所有部署的master节点都装有kubectl工具,node节点或者其他服务器如果想使用kubectl,可以输入以下命令来安装kubectl工具:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
sudo mv kubectl /usr/local/bin
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。
cd kubespray
sudo bash init/Cfg-after-deploy.sh
1.部署集群:
#需要事先配置好"hosts.yml"
ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root cluster.yml
2.删除node节点:
#无需事先配置好"hosts.yml","--extra-vars"参数指定
ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root remove-node.yml --extra-vars "node=主机名"
3.扩容node节点:
#需要事先配置好"hosts.yml"
ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root scale.yml
4.重置集群:
恢复到初始状态。
ansible-playbook -i inventory/shannon-k8s-testcluster/hosts.yml --become --become-user=root reset.yml
harbor.shannonai.com/test/cluster-proportional-autoscaler-amd64:1.4.0
harbor.shannonai.com/test/k8s-dns-node-cache:1.15.1
harbor.shannonai.com/test/kube-apiserver:v1.14.3
harbor.shannonai.com/test/kube-controller-manager:v1.14.3
harbor.shannonai.com/test/kube-proxy:v1.14.3
harbor.shannonai.com/test/kubernetes-dashboard-amd64:v1.10.1
harbor.shannonai.com/test/kube-scheduler:v1.14.3
harbor.shannonai.com/test/pause:3.1
harbor.shannonai.com/test/tiller:v2.11.0
harbor.shannonai.com/test/cni:v3.7.3
harbor.shannonai.com/test/kube-controllers:v3.7.3
harbor.shannonai.com/test/node:v3.7.3
harbor.shannonai.com/test/coredns:1.5.0
harbor.shannonai.com/test/nginx:1.15
harbor.shannonai.com/test/etcd:v3.3.10