以前写过一篇二进制手工安装k8s的文章,过程复杂,搞了多日才安装成功。
直到最近,在github上看到一个使用Ansible安装k8s的工程,安装过程之简单着实让我惊讶,感谢做者的开源精神。node
原项目地址: https://github.com/gjmzj/kubeasz
做者fork项目地址:https://github.com/qiujiahong/kubeaszpython
本文是读该项目的的读书笔记,相对原文稍微有一点改动,文中介绍了最小话安装的流程,读者若是须要作高可用安装能够参考github项目;
本文介绍最小化安装k8s;
安装系统版本: CentOS Linux release 7.5.1804 (Core)git
CentOS 7 请执行如下脚本:github
# 文档中脚本默认均以root用户执行 # 安装 epel 源 yum install epel-release -y # 安装依赖工具 yum install git python python-pip -y
# 安装ansible (国内若是安装太慢能够直接用pip阿里云加速) #pip install pip --upgrade #pip install ansible pip install pip --upgrade -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com pip install --no-cache-dir ansible -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com # 配置ansible ssh密钥登录 ssh-keygen -t rsa -b 2048 回车 回车 回车 ssh-copy-id $IP #$IP为本虚机地址,按照提示输入yes 和root密码
# 方式一:使用git clone git clone https://github.com/gjmzj/kubeasz.git mkdir -p /etc/ansible mv kubeasz/* /etc/ansible # 方式二:从发布页面 https://github.com/gjmzj/kubeasz/releases 下载源码解压到一样目录
tar zxvf k8s.1-9-8.tar.gz # 以安装k8s v1.9.8为例 mv bin/* /etc/ansible/bin
basic_images_kubeasz_x.y.tar.gz
下载解压到/etc/ansible/down
目录tar zxvf basic_images_kubeasz_0.2.tar.gz -C /etc/ansible/down
cd /etc/ansible cp example/hosts.allinone.example hosts vim hosts # 根据实际状况修改此hosts文件,全部节点改为本机IP # 验证ansible安装,正常能看到每一个节点返回 SUCCESS ansible all -m ping
# 分步安装 ansible-playbook 01.prepare.yml ansible-playbook 02.etcd.yml ansible-playbook 03.docker.yml ansible-playbook 04.kube-master.yml ansible-playbook 05.kube-node.yml ansible-playbook 06.network.yml ansible-playbook 07.cluster-addon.yml # 一步安装 #ansible-playbook 90.setup.yml
ansible-playbook roles/os-harden/os-harden.yml
,详情请参考os-harden项目若是提示kubectl: command not found,退出从新ssh登录一下,环境变量生效便可docker
kubectl version
kubectl get componentstatus # 能够看到scheduler/controller-manager/etcd等组件 Healthy kubectl get node # 能够看到单 node Ready状态 kubectl get pod --all-namespaces # 能够查看全部集群pod状态,默认已安装网络插件、coredns、metrics-server等 kubectl get svc --all-namespaces # 能够查看全部集群服务状态 # 能够看到 # kubernetes master(apiserver)组件 running # kubernetes-dashboard is running at.. kubectl cluster-info # 获取访问dashboard token kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') # 使用浏览器访问前面``kubectl cluster-info ``获取的dashboard地址,最后一条命令获取的token登录。
# 安装kubedns,默认已集成安装 #kubectl create -f /etc/ansible/manifests/kubedns # 安装dashboard,默认已集成安装 #kubectl create -f /etc/ansible/manifests/dashboard
dashboard
能够查看和管理集群,更多内容请查阅dashboard文档以上步骤建立的K8S开发测试环境请尽情折腾,碰到错误尽可能经过查看日志、上网搜索、提交issues
等方式解决;固然若是是完全奔溃了,能够清理集群后从新建立。vim
ansible-playbook 99.clean.yml
若是出现清理失败,相似报错:... Device or resource busy: '/var/run/docker/netns/xxxxxxxxxx'
,须要手动umount该目录后从新清理api
$ umount /var/run/docker/netns/xxxxxxxxxx $ ansible-playbook /etc/ansible/tools/clean_one_node.yml