Ansible自动化部署K8S集群

IT
IT
IT
405
文章
1
评论
2020年12月2日22:56:21 评论 13,604 3658字阅读12分11秒

Ansible介绍

Ansible是一种IT自动化工具。它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新。Ansible适用于管理企业IT基础设施,从具有少数主机的小规模到数千个实例的企业环境。Ansible也是一种简单的自动化语言,可以完美地描述IT应用程序基础结构。

使用文档: https://docs.ansible.com/

具备以下三个特点:

  • 简单:减少学习成本
  • 强大:协调应用程序生命周期
  • 无代理:可预测,可靠和安全

Ansible自动化部署K8S集群

  • Inventory:Ansible管理的主机信息,包括IP地址、SSH端口、账号、密码等
  • Modules:任务均有模块完成,也可以自定义模块,例如经常用的脚本。
  • Plugins:使用插件增加Ansible核心功能,自身提供了很多插件,也可以自定义插件。例如connection插件,用于连接目标主机。
  • Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible核心功能。

安装流程

  • 单master架构图

Ansible自动化部署K8S集群

  • 软件版本
     软件         版本
Linux操作系统 CentOS Linux release 7.7.1908 (Core)
Kubernetes v1.18.6
Docker 19.03.9
Etcd v3.4.9

 

  • 安装基础软件
[root@iZ2ze4psug6hqdxm5mda7mZ ~]#yum install -y git ansible
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# git clone https://github.com/cncentoscn/ansible-install-k8s.git
  • 下载k8s组建包,并上传到master节点上。
  • 链接: https://pan.baidu.com/s/1NVOKrSj-zf8I-8PLoIWvEw 密码: th37
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# ll
total 892240
-rw-r--r-- 1 root root 913648974 Dec 2 22:45 www.centoscn.vip.tar.gz
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# tar zxf www.centoscn.vip.tar.gz

单master集群配置

  • 根据自己集群的规划,输入对应的IP地址即可。
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# cd ansible-install-k8s/
[root@iZ2ze4psug6hqdxm5mda7mZ ansible-install-k8s]# vim hosts 
[master]
# 默认Naster节点也部署Node组件
192.168.0.88 node_name=k8s-master
[node]
192.168.0.89 node_name=k8s-node1
192.168.0.90 node_name=k8s-node2
[etcd]
192.168.0.88 etcd_name=etcd-1
192.168.0.89 etcd_name=etcd-2
192.168.0.90 etcd_name=etcd-3
[k8s:children]
master
node
[newnode]
#192.168.0.91 node_name=k8s-node3

Ansible自动化部署K8S集群

  • 配置自己集群中,所有包含的IP地址
[root@iZ2ze4psug6hqdxm5mda7mZ ansible-install-k8s]# vim group_vars/all.yml 
# 安装目录 
software_dir: '/root/www.centoscn.vip'
k8s_work_dir: '/opt/kubernetes'
etcd_work_dir: '/opt/etcd'
tmp_dir: '/tmp/k8s'

# 集群网络
service_cidr: '10.0.0.0/24'
cluster_dns: '10.0.0.2' # 与roles/addons/files/coredns.yaml中IP一致,并且是service_cidr中的IP
pod_cidr: '10.244.0.0/16' # 与roles/addons/files/kube-flannel.yaml中网段一致
service_nodeport_range: '30000-32767'
cluster_domain: 'cluster.local'

# 自签证书可信任IP列表,为方便扩展,可添加多个预留IP
cert_hosts:
# 包含所有Master IP和service_cidr的第一个IP
k8s:
- 10.0.0.1
- 192.168.0.88
- 192.168.0.89
- 192.168.0.90
- 192.168.0.91
- 192.168.0.92
- 192.168.0.93
- 192.168.0.94
- 59.110.175.38
# 包含所有etcd节点IP
etcd:
- 192.168.0.88
- 192.168.0.89
- 192.168.0.90

Ansible自动化部署K8S集群

  • 所有准备工作完成后,开始安排,全程只需要五分钟,大伙可以喝杯咖啡了。
[root@iZ2ze4psug6hqdxm5mda7mZ ansible-install-k8s]# ansible-playbook -i hosts single-master-deploy.yml -uroot -k
  • 出现这个界面,说明完美安装完成,记得保存里面的令牌内容。

Ansible自动化部署K8S集群

  • 查看节点
[root@iZ2ze4psug6hqdxm5mda7mZ ansible-install-k8s]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready <none> 105s v1.18.6
k8s-node1 Ready <none> 105s v1.18.6
k8s-node2 Ready <none> 105s v1.18.6

环境测试和验证

  • 创建nginx deployment
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# kubectl create deployment web --image=nginx
deployment.apps/web created
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# kubectl expose deployment web --port=80 --type=NodePort
service/web exposed
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# kubectl scale deployment web --replicas=3
deployment.apps/web scaled
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/web-5dcb957ccc-6fwhb 1/1 Running 0 42s
pod/web-5dcb957ccc-dgndl 1/1 Running 0 98s
pod/web-5dcb957ccc-wqmlg 1/1 Running 0 42s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 8m24s
service/web NodePort 10.0.0.208 <none> 80:32488/TCP 90s
  • 来个简单的curl请求
[root@iZ2ze4psug6hqdxm5mda7mZ ~]# curl 10.0.0.208
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a rel="external nofollow" target="_blank" href="https://www.centoscn.vip/wp-content/themes/begin/go.php?url=aHR0cDovL25naW54Lm9yZy8=">nginx.org</a>.<br/>
Commercial support is available at
<a rel="external nofollow" target="_blank" href="https://www.centoscn.vip/wp-content/themes/begin/go.php?url=aHR0cDovL25naW54LmNvbS8=">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
  • WEB页面验证

Ansible自动化部署K8S集群

Dashboard

  • 访问https://101.200.81.75:30001

Ansible自动化部署K8S集群Ansible自动化部署K8S集群

继续阅读
  • 我的QQ
  • QQ扫一扫
  • weinxin
  • 我的头条
  • 头条扫一扫
  • weinxin
IT
  • 本文由 发表于 2020年12月2日22:56:21
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
二进制部署K8S-v1.18.8 二进制

二进制部署K8S-v1.18.8

生产环境可部署Kubernetes集群的两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 官...
Ansible-Tower使用文档 Ansible

Ansible-Tower使用文档

导航栏介绍 # viewes Dashboard 仪表盘展示信息的 Jobs 跑过的任务记录 Schedules 计划任务 My View 查看用户的工作模版,和任务记录 # resources Te...

您必须才能发表评论!