概述:

本文提供ansible-playbooks用来帮助读者用ansible构建二进制kubernetes1.14,

集群包含calico、nginx-ingress、HA

提供资源有kubernetes-1.14二进制安装包、docker18/rpm包、calico所需镜像、nginx-ingress所需镜像、cfssl包等

执行tree /root/tmp/ansible-playbooks 可以在files目录下查看所需资源,后续会继续完善本文

资源地址:https://pan.baidu.com/s/1KAUOY7NWnGXrDmqSd1LVPA 密码:nhbl

后续会继续详写nfs、ceph、hostpath等volum;基于POD运行的registry镜像仓库;calico、ingress详解;ELK;federationv2联邦多集群管理等,有兴趣的小伙伴可以加入探讨!

1.配置服务器环境

!!!注意⚠️

生产环境建议如上配置,是否在master上部署kubelet\kube-proxy\docker\calico,可根据资源自行判断,服务器配置根据服务需求进行调整。

1、etcd节点x3 : 注意etcd必须是奇数个节点

2、master节点x3 : 没有奇数偶数的限制,后面可以根据实际情况再增加节点数,

3、node节点x1: 真正应用负载的节点,后面可以根据实际情况很方便的增加节点数

本文为了展示,服务器配置如下:

1.1.修改每台节点DNS

在每台节点上执行:

cat <<EOF >> /etc/hosts
192.168.33.1  k8s-master1
192.168.33.2  k8s-master2
192.168.33.3  k8s-master3
192.168.33.4  k8s-node1
192.168.33.5  k8s-node2
192.168.33.6  k8s-node3
192.168.33.7  k8s-node4
192.168.33.8  k8s-node5
EOF

1.2.开启k8s-master1对所有节点免密访问

定义变量,关闭shell后该变量会消失需要重新执行

ms="k8s-master1 k8s-master2 k8s-master3" && \
oms="k8s-master2 k8s-master3" &&\
ns="k8s-node1 "

生成并拷贝证书

ssh-keygen -t rsa && \
for i in $ms $ns; do ssh-copy-id -i ~/.ssh/id_rsa.pub $i; done

1.3.修改所有节点主机名

for host in $ms $ns; do
    ssh $host "hostnamectl set-hostname $host";
Done

1.4.将ansible等资源上传到k8s-master1的~/tmp目录

解压

tar -zxvf ansible.tar.gz

将nodePrepare.sh拷贝到其他节点:

for host in $ms $ns; do
    scp -r ~/tmp/nodePrepare,sh root@$host:/root/tmp/nodePrepare.sh";
done

1.5.设置基础环境

for host in $ms $ns; do
    ssh $host "sh /root/tmp/nodePrepare.sh";
done

注意:若配置未生效,重启机器生效

2.部署Kubernetes集群

2.1.部署ansible运维工具

设置ansible的部署节点:

cat>>/etc/ansible/hosts<<EOF
[master]
10.8.4.133
10.8.4.134
10.8.4.135
[node]
10.8.4.136
EOF

执行:

ansible all -m ping -u root 

如图所示

如果有失败节点,请检查ssh免秘是否执行成功。

2.2.开始部署docker、kubernetes集群组件、相应网络组件及镜像仓库

设置xxx/ansible-k8s/stage文件,更改环境地址。

根据自己的机器更改stage文件。

之后执行

ansible-playbook -i /root/tmp/ansible-playbooks/ansible-k8s/stage -u root /root/tmp/ansible-playbooks/ansible-k8s/kubernetes.yml

2.3.验证是否安装成功

在master节点执行如下命令

kubectl get cs

kubectl get nodes --all-namespaces

所有node状态为ready表示集群安装完成

kubectl get pod -n kube-system

calico 与 coredns  pod搭建成功

route -n 查看tunl0网络,成功,节点可以ping通podIP

kubectl get pod -n ingress-nginx

2.3.1.部署my-nginx服务,检测

vi my-nginx.yaml 
apiVersion: apps/v1
kind: Deployment*
metadata:
  name: my-nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s-app: my-nginx
  template:
    metadata:
      labels:
      k8s-app: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.9
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    k8s-app: my-nginx
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 80
    protocol: TCP
    name: http
  - port: 443
    protocol: TCP
    name: https
  selector:
    k8s-app: my-nginx

2.3.2.部署my-nginx-ingress检测ingress

vi my-nginx-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: submodule-checker-ingress
spec:
  rules:
  - host: nginx.weave.pub
    http:
      paths:
      - backend:
          serviceName: my-nginx
          servicePort: 80
kubectl create -f my-nginx-ingress.yaml && kubectl create -f my-nginx.yaml
vi /etc/hosts

ingress部署成功

检验coredns可以部署busybox的pod,进入pod,用nslookup查看dns是否可以得到clusterIP

以上如有问题,可以通过kubectl describe pod XXX或者systemctl status XXX进行查看问题并解决,也可以journalctl -u XXX查看日志信息

由于网上资源资料太少,所以ansible脚本及资源均为个人手码,整理拿出提供大家参考,觉得有帮助的小伙伴给个赞哟!

后续会继续详写nfs、ceph、hostpath等volum;基于POD运行的registry镜像仓库;calico、ingress详解;ELK等,有兴趣的小伙伴可以加入探讨。

哪里有不懂可以私我!欢迎打扰

参考资料:

doc of ansible

使用Ansible + kubeadm部署K8S集群

二进制部署Kubernetes-v1.14.1集群

生产环境:ansible自动化部署kubernetes-1.14的更多相关文章

  1. .NET持续集成与自动化部署之路第三篇——测试环境到生产环境的一键部署策略(Windows)

    Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言     前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟 ...

  2. Jenkins+Gitlab+Ansible自动化部署(六)

    Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs. ...

  3. Jenkins+Gitlab+Ansible自动化部署(一)

    首先准备实验环境 虚拟机 主机名 IP地址 服务 系统版本 内核版本 Vmware Workstation 14 gitlab.example.com 192.168.244.130 gitlab  ...

  4. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  5. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  6. Jenkins+Gitlab+Ansible自动化部署(五)

    Freestyle Job实现静态网站部署交付(接Jenkins+Gitlab+Ansible自动化部署(四)https://www.cnblogs.com/zd520pyx1314/p/102445 ...

  7. Jenkins+Gitlab+Ansible自动化部署(三)

    接Jenkins+Gitlab+Ansible自动化部署(一)https://www.cnblogs.com/zd520pyx1314/p/10210727.html 和(二)https://www. ...

  8. Jenkins+Gitlab+Ansible自动化部署(四)

    接Jenkins+Gitlab+Ansible自动化部署(三)https://www.cnblogs.com/zd520pyx1314/p/10235394.html Jenkins应用 Jenkin ...

  9. Linux(四)—— 项目部署与ansible自动化部署

    目录 项目部署与ansible自动化部署 一.项目部署 二.ansible自动化部署(python自动化运维) 1.安装ansible 2.ansible例子 3.ansible自动化部署nginx ...

  10. CentOS7系统 ansible自动化部署多台服务器部署

    CentOS7系统 ansible自动化部署多台服务器部署   Ansible工作机制  从图中可以看出ansible分为以下几个部份: 1> Control Node:控制机器2> In ...

随机推荐

  1. Docker部署网站之后映射域名

    Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下.这里主要是为了记录在我们启动容器之后,tomcat需要直接定位到网站信息,而不是打开域名之后,还得加个bl ...

  2. 洛谷 P3628 [APIO2010]特别行动队

    题意简述 将n个士兵分为若干组,每组连续,编号为i的士兵战斗力为xi 若i~j士兵为一组,该组初始战斗力为\( s = \sum\limits_{k = i}^{j}xk \),实际战斗力\(a * ...

  3. scrapy xpath用法

    一.实验环境 1.Windows7x64_SP1 2.anaconda3 + python3.7.3(anaconda集成,不需单独安装) 3.scrapy1.6.0 二.用法举例 1.开启scrap ...

  4. [Spring cloud 一步步实现广告系统] 2. 配置&Eureka服务

    父项目管理 首先,我们在创建投放系统之前,先看一下我们的工程结构: mscx-ad-sponsor就是我们的广告投放系统.如上结构,我们需要首先创建一个Parent Project mscx-ad 来 ...

  5. RSA加密的java实现

    首先科普一波: RSA的1024位是指公钥及私钥分别是1024bit,也就是1024/8=128 Bytes RSA算法密钥长度的选择是安全性和程序性能平衡的结果,密钥长度越长,安全性越好,加密解密所 ...

  6. HBase 系列(十)—— HBase 的 SQL 中间层 Phoenix

    一.Phoenix简介 Phoenix 是 HBase 的开源 SQL 中间层,它允许你使用标准 JDBC 的方式来操作 HBase 上的数据.在 Phoenix 之前,如果你要访问 HBase,只能 ...

  7. 服务器小白的我,是如何将 node+mongodb 项目部署在服务器上并进行性能优化的

    前言 本文讲解的是:做为前端开发人员,对服务器的了解还是小白的我,是如何一步步将 node+mongodb 项目部署在阿里云 centos 7.3 的服务器上,并进行性能优化,达到页面 1 秒内看到 ...

  8. IOS系统

    苹果产品以前技术是很牛逼.但是,苹果的系统是IOS系统,是一个封闭系统,就是你只看的到程序看不到文件的存储位置,相当于说他们自己的软件或者要花钱的软件才可以在闭环系统里面通过苹果视频该软件导出来,祝2 ...

  9. SPI 机制-插件化扩展功能

    SPI(Service Provider Interfaces),中文直译服务提供者接口,一种服务发现机制.可能很多人都不太熟悉这个机制,但是平常或多或少都用到了这个机制,比如我们使用 JDBC 连接 ...

  10. 简明Python教程-函数联系笔记

    1.实参与形参 在定义函数时给定的名称称作"形参",再调用函数时你所提供给函数的值称作“实参” 2.局部变量 所有变量的作用域是它们被定义的块,从定义它们的名字的定义点开始. 3. ...