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

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

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

Ansible了解

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

自动化部署APP

自动化管理配置项;

自动化的持续交互;

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

  所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说就是批量的在远程服务器上执行命令。当然,最主要的是它是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabricansible还有一个共同点就是不需要在远程主机上安装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没有问题

 

2.安装DNS/dashboard时,注意dashboard-controller.yamldeployment的版本为extensions/v1beta1

 

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

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

 

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

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

kubectlcreate clusterrolebinding kubelet-node-clusterbinding1 --clusterrole=cluster-admin--user=admin



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装Kubernetes可以使用Ansible进行自动化部署。以下是安装Kubernetes的基本步骤: 1. 安装Ansible:在Ansible控制机器上安装Ansible。 2. 配置Kubernetes主机:使用Ansible在所有Kubernetes节点上设置必要的软件包和配置。 3. 部署etcd集群:使用Ansible在所有etcd节点上部署etcd集群。 4. 部署Kubernetes控制平面:使用Ansible在所有控制节点上部署Kubernetes API服务器,Controller Manager和Scheduler。 5. 部署Kubernetes节点:使用Ansible在所有工作节点上部署Kubernetes节点软件包和配置。 6. 部署网络插件:使用Ansible在所有节点上部署网络插件。 7. 部署Kubernetes Dashboard(可选):使用Ansible在控制节点上部署Kubernetes Dashboard。 以下是一个安装KubernetesAnsible playbook示例: ```yaml --- - name: Install Kubernetes hosts: all become: true tasks: - name: Set up Kubernetes repository apt_repository: repo: deb http://apt.kubernetes.io/ kubernetes-xenial main state: present filename: kubernetes.list - name: Install Kubernetes packages apt: name: "{{ item }}" state: present with_items: - kubelet - kubeadm - kubectl - name: Initialize Kubernetes cluster command: kubeadm init --apiserver-advertise-address={{ ansible_host }} register: kubeadm_output when: inventory_hostname == groups['kubernetes_master'][0] - name: Save kubeadm join command set_fact: kubeadm_join: "{{ kubeadm_output.stdout_lines[-2] }}" - name: Configure kubectl command: "kubectl config set-cluster local --server=https://{{ groups['kubernetes_master'][0] }}:6443 --certificate-authority=/etc/kubernetes/pki/ca.crt && kubectl config set-context local --cluster=local && kubectl config use-context local" - name: Join Kubernetes cluster shell: "{{ hostvars[groups['kubernetes_master'][0]]['kubeadm_join'] }}" when: inventory_hostname in groups['kubernetes_worker'] ``` 这个playbook主要完成以下任务: 1. 在所有Kubernetes节点上设置Kubernetes软件包的存储库。 2. 安装Kubernetes软件包。 3. 在第一个Kubernetes主节点上初始化Kubernetes集群。 4. 将加入Kubernetes集群的命令存储在一个变量中。 5. 配置kubectl以连接到Kubernetes API服务器。 6. 在所有Kubernetes节点上加入Kubernetes集群。 你可以根据你的环境和需求修改这个playbook。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值