vim /etc/hosts
192.168.193.10 deploy
192.168.193.11 master
192.168.193.12 node2
192.168.193.13 node3
etcd数据库部署在192.168.193.11 master 192.168.193.12 node2 192.168.193.13 node3
一、利用ansible部署kubernetes准备:
集群介绍
本系列文档致力于提供快速部署高可用k8s集群的工具,并且也努力成为k8s实践、使用的参考书;基于二进制方式部署和利用ansible-playbook实现自动化:既提供一键安装脚本,也可以分步执行安装各个组件,同时讲解每一步主要参数配置和注意事项;二进制方式部署有助于理解系统各组件的交互原理和熟悉组件启动参数,有助于快速排查解决实际问题。
版本组件
kubernetes v1.9.7
etcd v3.3.4
docker 18.03.0-ce
calico/node:v3.0.6
calico/cni:v2.0.5
calico/kube-controllers:v2.0.4
centos 7.3+
集群规划和基础参数设定
- 1、高可用集群所需节点配置如下:
- 部署节点 x1 : 运行这份 ansible 脚本的节点
- etcd节点 x3 : 注意etcd集群必须是1,3,5,7...奇数个节点
- master节点 x1 : 运行集群主要组件
- node节点 x3 : 真正应用部署的节点,根据需要增加机器配置和节点数
master节点就是node1节点
- 2、在部署节点准备ansible:使用ansible的doker环境启动
(1)下载内部源配置脚本
sh yum-repo.sh
(2)下载并安装docker
本机已有4台节点走有了
ls
tar zxvf docker.tar.gz
ls
cd docker/
ls
sh docker.sh
systemctl status docker
docker images
(3)下载并运行docker版ansible
[root@deploy ~]# docker pull reg.yunwei.edu/learn/ansible:alpine3
[root@deploy ~]# docker images
[root@deploy ~]# docker run -itd -v /etc/ansible:/etc/ansible -v /etc/kubernetes/:/etc/kubernetes/ -v /root/.kube:/root/.kube -v /usr/local/bin/:/usr/local/bin/ 1acb4fd5df5b /bin/sh
[root@deploy ~]# docker exec -it 0934496d7cef /bin/sh
(4)配置每台机器之间主机名以及解析
(5)进入ansible容器,配置免密登录
#ssh-keygen 回车 回车 回车
#ssh-copy-id $Ips #$IPs为所有节点地址包括自身,按照提示输入yes 和root密码
测试各节点是否正常
[root@deploy ~]# wget http://download2.yunwei.edu/shell/kubernetes.tar.gz
[root@deploy ~]# tar zxf kubernetes.tar.gz
[root@deploy example]# cd ..
[root@deploy ansible]# pwd
/etc/ansible
[root@deploy ansible]# vim hosts
wq保存退出
[root@deploy ansible]# docker ps
[root@deploy ansible]# docker exec -it 0934496d7cef /bin/sh
/ # cd /etc/ansible/
/ # ansible all -m ping
发送密钥
/etc/ansible # ssh-keygen
/etc/ansible # ssh-copy 192.168.193.10
/etc/ansible # ssh-copy-id 192.168.193.11
/etc/ansible # ssh-copy-id 192.168.193.12
/etc/ansible # ssh-copy-id 192.168.193.13
执行
/etc/ansible # ansible-playbook 01.prepare.yml
/etc/ansible # ansible-playbook 02.etcd.yml
第三步如果机器上有docker就不用执行,没有就执行
/etc/ansible # ansible-playbook 03.docker.yml
/etc/ansible # ansible-playbook 04.kube-master.yml
/etc/ansible # ansible-playbook 05.kube-node.yml
克隆会话
[root@deploy ~]# cd kubernetes/
[root@deploy kubernetes]# tar zxf image.tar.gz
把解压的文件发送到 node123
[root@deploy kubernetes]# scp -r image 192.168.193.11:/root/
[root@deploy kubernetes]# scp -r image 192.168.193.12:/root/
[root@deploy kubernetes]# scp -r image 192.168.193.13:/root/
三个节点都进到目里
[root@master ~]# cd image/
[root@master image]# cd calico/
[root@node2 ~]# cd image/
[root@node2 image]# cd calico/
[root@node3 image]# cd calico
[root@node3 ~]# cd image/
[root@node3 image]# pwd
/root/image
三个节点都执行
mv *.tar calico/
mv *.tar.gz calico/
/root/image/calico这个路径下执行这条命令,注意标点符号不是单引号,是反引号
[root@master calico]# for ls in `ls`;do docker load -i $ls;done 导入镜像
[root@node2 image]# cd /root/image/calico
[root@node2 calico]# for ls in `ls`;do docker load -i $ls;done
[root@node3 image]# cd /root/image/calico
[root@node3 calico]# for ls in `ls`;do docker load -i $ls;done
各节点docker images 查看镜像
回到容器里执行06命令
ansible-playbook 06.network.yml
执行完后
/etc/ansible/manifests/coredns # pwd
/etc/ansible/manifests/coredns
/etc/ansible/manifests/coredns # kubectl create -f .
node列表
[root@deploy ~]# kubectl get node
查看node详细信息
[root@deploy ~]# kubectl get node -o wide
查看pod详细讯息
测试网络是否正常使用
/etc/ansible/manifests/dashboard # kubectl create -f .
正常通信 这样集群就算部署完成了
登录页面
先查看集群状态
[root@deploy ~]# kubectl cluster-info
https://192.168.193.11:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
admin/admin
获取令牌
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret|grep admin-user|awk '{print $1}')
写个脚本
[root@deploy ~]# vim token.sh
下次获取令牌直接运行脚本就可以了