博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从0到1使用Kubernetes系列(三)——使用Ansible安装Kubernetes集群
阅读量:5873 次
发布时间:2019-06-19

本文共 4174 字,大约阅读时间需要 13 分钟。

上一篇文章《从0到1使用Kubernetes系列(二):安装工具介绍》中,说到了Ansible的功能以及使用Ansible进行集群部署的优势,接下来将在本文中介绍如何通过Virtualbox + Vagrant启动CentOS虚拟机,并且使用ansible脚本在虚拟机中搭建kubernetes集群以及现有集群如何添加新的节点。

启动虚拟机

首先,通过下面命令克隆并进入项目:

git clone https://github.com/choerodon/kubeadm-ansible.git && cd kubeadm-ansible复制代码

通过 Virtualbox + Vagrant启动三台CentOS系统虚拟机,在项目根目录中有编写好的Vagrantfile文件,直接使用就可以了。

Vagrantfile文件如下:

Vagrant.configure(2) do |config|(1..3).each do |i|    config.vm.define "node#{i}" do |s|    s.vm.box = "bento/centos-7.3"    s.vm.box_url = "http://file.choerodon.com.cn/vagrant/box/bento_centos-7.3.box"    s.vm.hostname = "node#{i}"    n = 10 + i    s.vm.network "private_network", ip: "192.168.56.#{n}"    s.vm.provider "virtualbox" do |v|        v.cpus = 2        v.memory = 4096    end    endendend复制代码

其中box_url指定box镜像下载地址,hostname指虚拟机主机名,private_network指内网ip地址,cpus和memory指虚拟机的硬件资源要求。

vagrant-cachier插件用于不同虚拟机中共享公共包缓存,减少虚拟机的包下载时间。 根据上述Vagrantfile文件启动的虚拟机相关信息如下:

Hostname CPU Memory IP System
node1 2 4G 192.168.56.11 CentOS 7.3
node2 2 4G 192.168.56.12 CentOS 7.3
node3 2 4G 192.168.56.13 CentOS 7.3

在项目根目录中执行下面命令启动虚拟机:

*启动前请确认主机已开启CPU虚拟化支持。

vagrant up复制代码

登录虚拟机node1

vagrant ssh node1复制代码

部署Kubernetes

在node1中部署Ansible所需的环境

sudo yum install -y epel-release && \sudo yum install -y \    ansible \    git \    httpd-tools \    pyOpenSSL \    python-cryptography \    python-lxml \    python-netaddr \    python-passlib \    python-pip复制代码

在node1中再次克隆项目代码(防止换行符改变导致后期部署出错)

git clone https://github.com/choerodon/kubeadm-ansible.git && cd kubeadm-ansible复制代码

在node1中编辑项目下的kubeadm-ansible/inventory/hosts文件,修改各机器的访问地址、用户名、密码,并维护好各节点与角色的关系,前面的名称为机器的hostname。该用户必须是具有root权限的用户,但并非要求一定是root用户,其他具有root权限的用户也可以。比如,想要部署单master节点集群,只需要这样配置(参考):

*在all分区中每一行为一个节点的信息,node1为该节点的hostname,ansible_host指节点内网IP,ip指Kubernetes目标绑定网卡IP,ansible_user为该节点具有管理员权限的一个用户,ansible_ssh_pass为该用户的密码,ansible_become代表执行命令时使用管理员权限。

其中Kube-Master节点为Kubernetes主节点、Kube-Node节点为Kubernetes普通节点、Etcd节点为将部署Etcd的节点,按本教程安装Kube-Master节点与Etcd节点必须一致,Etcd官方建议Etcd集群节点个数为奇数个(比如1、3、5)以防止脑裂。

[all]node1 ansible_host=192.168.56.11 ip=192.168.56.11 ansible_user=root ansible_ssh_pass=vagrant ansible_become=truenode2 ansible_host=192.168.56.12 ip=192.168.56.12 ansible_user=root ansible_ssh_pass=vagrant ansible_become=truenode3 ansible_host=192.168.56.13 ip=192.168.56.13 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true[kube-master]node1[etcd]node1[kube-node]node1node2node3复制代码

*在项目下的kubeadm-ansible/inventory/hosts文件默认配置的是3个master节点集群。

在node1中执行下面命令部署集群:

ansible-playbook -i inventory/hosts -e @inventory/vars cluster.yml复制代码

在cluster.yml中我们将集群的安装划分为6个阶段,分别为:

  • 安装预备
    • 安装前检查:检查系统,确认Yum库,下载cfssl。
    • Docker相关检查:检查Docker Engine,Configuration,Proxy。
  • Etcd安装
    • 生成Etcd证书
    • 安装Docker
    • 配置系统环境
  • kube-master:kube-node必须组件安装
    • kubelet
  • kube-master安装
    • 检查kubeadm
    • 生成证书
    • 修改配置
  • kube-node安装
    • 生成配置文件
    • kubeadm join
  • 其他组件安装
    • 配置flannel网络
    • 安装ingress-nginx
    • 安装dashboard
    • 安装heapster
    • 安装kube-lego

至此,集群部署到此结束,可以执行下面命令查看pod状态,都为Running状态则部署成功:

kubectl get po -n kube-system复制代码

如果部署失败,想要重置集群(所有数据),执行:

ansible-playbook -i inventory/hosts reset.yml复制代码

添加节点

如果想再添加一个节点,进入已有集群当中可以按下面步骤进行: 编辑kubeadm-ansible/inventory/hosts,将新节点信息添加进去。比如新节点hostname为node4,ip为192.168.56.14,其余信息与其他节点相同,那么进行如下添加信息:

[all]node1 ansible_host=192.168.56.11 ip=192.168.56.11 ansible_user=root ansible_ssh_pass=vagrant ansible_become=truenode2 ansible_host=192.168.56.12 ip=192.168.56.12 ansible_user=root ansible_ssh_pass=vagrant ansible_become=truenode3 ansible_host=192.168.56.13 ip=192.168.56.13 ansible_user=root ansible_ssh_pass=vagrant ansible_become=truenode4 ansible_host=192.168.56.14 ip=192.168.56.14 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true[kube-master]node1[etcd]node1[kube-node]node1node2node3node4复制代码

节点信息添加完成后,就可以进行节点添加操作了:

ansible-playbook -i inventory/hosts -e @inventory/vars scale.yml复制代码

添加完成后查看节点信息:

kubectl get node复制代码

集群部署的介绍就到此结束了,下一篇我们将为大家介绍如何搭建第一个应用程序。

更多关于Kubernetes系列的文章,欢迎点击阅读 ▼

关于Choerodon猪齿鱼

是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台,同时提供IoT、支付、数据、智能洞察、企业应用市场等业务组件,致力帮助企业聚焦于业务,加速数字化转型。

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

  • 官网:
  • 论坛:
  • Github:
  • 微信:Choerodon猪齿鱼
  • 微博:Choerodon猪齿鱼

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

转载地址:http://ophnx.baihongyu.com/

你可能感兴趣的文章
Vue.js 介绍及其脚手架工具搭建
查看>>
Register code
查看>>
oracle基础入门(二)
查看>>
java 基础知识-数组的7种算法(排序、求和、最值、遍历...)
查看>>
倒要看看你有啥本事
查看>>
bzu-java(三)
查看>>
【初体验】valgrind分析程序性能
查看>>
testlink(以及服务器)问题定位思路
查看>>
Liferay Portal使用MySQL数据库配置
查看>>
个人代码库の模拟QQ振屏功能
查看>>
51Nod:1268 和为K的组合
查看>>
计科1501韩猛实验8
查看>>
课堂练习 组合数据练习
查看>>
面向对象程序设计第二次作业
查看>>
STL库的内存配置器(allocator)
查看>>
NO3 cat-xargs-cp-mv-rm-find命令
查看>>
Performance Tuning
查看>>
Javascript 强制浏览器渲染Dom文档
查看>>
用HTML5 Canvas为网页添加动态波浪背景
查看>>
matlab handle plot
查看>>