ansible安装k8s步骤及注意事项(在线安装)

以下步骤都经本人实测,可以完美运行。

官方参考网址:https://github.com/gjmzj/kubeasz/

Ansible了解

ansible是个什么东西呢?官方的title是“Ansibleis Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:

自动化部署APP;

自动化管理配置项;

自动化的持续交互;

自动化的(AWS)云服务管理;

所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说就是批量的在远程服务器上执行命令。当然,最主要的是它是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

由上面的图可以看到 Ansible 的组成由 5 个部分组成:

  • Ansible : 核心
  • Modules : 包括 Ansible 自带的核心模块及自定义模块

  • Plugins : 完成模块功能的补充,包括连接插件、邮件插件等

  • Playbooks : 剧本;定义 Ansible 多任务配置文件,由Ansible 自动执行

  • Inventory : 定义 Ansible 管理主机的清单

具体的命令可以查看参考(中文权威指南):http://www.ansible.com.cn/docs/intro_installation.html

安装k8s

1. 安装依赖工具

# 文档中脚本默认均以root用户执行# 安装 epel 源并更新
yum install epel-release –y(最好每台机器装一下)
yum install net-tools
yum update# 删除不要的默认安装
yum erase firewalld firewalld-filesystem python-firewall -y# 安装python
yum install python -y

2. 安装ansible

# CentOS 7
yum install git python-pip -y# pip安装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

3. 在deploy节点配置免密码登陆

ssh-keygen -t rsa -b 2048 回车 回车 回车
ssh-copy-id $IPs #$IPs为所有节点地址包括自身,按照提示输入yes 和root密码
(即使是本机也需要配置)

4. 在deploy节点编排k8s安装

# 下载项目文件
git clone https://github.com/gjmzj/kubeasz.git
mv kubeasz /etc/ansible# 下载已打包好的binaries,并且解压缩到/etc/ansible/bin目录# 国内请从我分享的百度云链接下载 https://pan.baidu.com/s/1c4RFaA # 如果你有合适网络环境也可以按照/down/download.sh自行从官网下载各种tar包到 ./down目录,并执行download.sh
tar zxvf k8s.191.tar.gz
mv bin/* /etc/ansible/bin
cd /etc/ansible
cp example/hosts.m-masters.example hosts# 根据上文实际规划修改此hosts文件
vi hosts

验证ansible安装

在deploy 节点使用如下命令

ansible all -m ping

如果配置正确可以看到类似输出:

192.168.1.42 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
192.168.1.43 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}
192.168.1.44 | SUCCESS => {
    "changed": false, 
    "failed": false, 
    "ping": "pong"
}

5. 安装集群

注意:

1)如何重复安装时,注意在执行完卸载命令后,将/etc/kubernetes目录删除

2)安装02.etcd时往往不能够一次性成功安装,如何执行过程中有错误应执行第二遍02.etcd.yml(不管使用90.setup.yml或是02.etcd.yml安装)

#ansible-playbook 01.prepare.yml
#ansible-playbook 02.etcd.yml
#ansible-playbook 03.kubectl.yml
#ansible-playbook 04.docker.yml
#ansible-playbook 05.kube-master.yml
#ansible-playbook 06.kube-node.yml
#ansible-playbook 07.calico.yml 或者 ansible-playbook 07.flannel.yml 只能选择一种网络插件
#ansible-playbook 90.setup.yml # 一步安装
#ansible-playbook 99.clean.yml # 一步安装

source /etc/profile(环境变量设置未生效,kubectl工具不能使用)

自动安装时没有环境变量,需要source一下;

单主单节点

发现问题:ansible1.8在重新安装并没有完全删除掉/etc/kubernetes中的东西,1.9没啥问题,所以1.8需要将/etc/kubernetes中的东西全部删掉再运行;否则在安装06node时csr验证会报错。

还有装02.etcd时配置文件读不到的问题,运行两次就好了;

ansible 1.9没有问题

安装DNS/dashboard时,注意dashboard-controller.yaml中deployment的版本为extensions/v1beta1

规律,可以先执行90.setup,然后执行2.etcd

卸载的时候注意删除掉/etc/kubernetes目录

注意:api-server是以https(用户名密码启动的),所以最后需要为用户配置角色才可以通过url进行访问:

绑定api-server的权限(否则是注册不上的)

kubectlcreate clusterrolebinding kubelet-node-clusterbinding1 --clusterrole=cluster-admin--user=admin
标签:Ansible 发布于:2019-10-22 09:08:45