Kubernetes 集群环境:

IP地址 主机名 角色 软硬件限制
192.168.119.134 master1 deploy ,master1 ,lb1 ,etcd

(1) CPU至少1核,内存至少2G
(2) Linux 内核办版本至少3.10,使用 CentOS 7
(3) Docker 版本至少 1.9 ,Etcd 版本至少 2.0

192.168.119.135 master2 master2 ,lb2
192.168.119.136 node1 etcd ,node
192.168.119.137 node2 etcd ,node

备注:

(1) etcd:用来存储各个资源对象的状态及数据,etcd集群必须是奇数个节点(1,3,5,....)
(2) master:用来管理node节点,这里部署两个master,是为了做高可用,做高可用需要配置一个VIP ( 虚拟IP ),这里会配置为:192.168.119.130
(3) lb:负载均衡节点,安装 HAProxy + Keepalived
(4) node:真正应用负载的节点,根据需要提升机器配置和增加节点
(5) deploy:这个工具相当于RC的升级版,用来部署,控制Pod的数量,跟RC比较,最大的一个特点是可以知道Pod部署的进度
(6) 本文参考:https://github.com/gjmzj/kubeasz

准备工作:

[root@localhost ~]$ yum install -y epel-release    # 四台机器都执行
[root@localhost ~]$ yum update -y
[root@localhost ~]$ iptables -F
[root@localhost ~]$ setenforce 0
[root@localhost ~]$ systemctl stop firewalld.service

deploy节点配置:

[root@localhost ~]$ yum install -y ansible git wget    # 会用ansible-playbook来部署其他节点
[root@localhost ~]$ ssh-keygen # 生成密钥对,用于下发到各个节点机器,命令如下
[root@localhost ~]$ for ip in 134 135 136 137; do ssh-copy-id 192.168.119.$ip; done
[root@localhost ~]$ ansible all -m ping # 测试是否连通各个节点
[root@localhost ~]$ git clone https://github.com/gjmzj/kubeasz.git # 把k8s项目克隆到本地,里面有很多yml文件
[root@localhost ~]$ mv kubeasz/* /etc/ansible/ # 我们使用ansible-playbook来执行yml文件,从而部署k8s集群
[root@localhost ~]$ cd /usr/local/src/
[root@localhost src]$ tar xf k8s.1-11-6.tar.gz # k8s包下载地址:https://pan.baidu.com/s/1c4RFaA#list/path=%2F
[root@localhost src]$ mv bin/* /etc/ansible/bin/

配置 ansible 主机组:

[root@localhost ~]$ /bin/cp /etc/ansible/example/hosts.m-masters.example /etc/ansible/hosts    # 要修改的地方如下
[root@localhost ~]$ vim /etc/ansible/hosts
[deploy]
192.168.119.134 NTP_ENABLED=no [etcd]
192.168.119.134 NODE_NAME=etcd1
192.168.119.136 NODE_NAME=etcd2
192.168.119.137 NODE_NAME=etcd3 [kube-master]
192.168.119.134
192.168.119.135 [lb]
192.168.119.134 LB_IF="ens33" LB_ROLE=master
192.168.119.135 LB_IF="ens33" LB_ROLE=backup [kube-node]
192.168.119.136
192.168.119.137 K8S_VER="v1.11"
MASTER_IP="192.168.119.130" # 注意这里填的是VIP(虚拟IP)

安装 k8s 集群:

[root@localhost ~]$ cd /etc/ansible/
[root@localhost ansible]$ ansible-playbook 01.prepare.yml # 创建证书及安装准备
[root@localhost ansible]$ ansible-playbook 02.etcd.yml # 安装etcd集群
[root@localhost ansible]$ ansible-playbook 03.docker.yml # 安装docker服务
[root@localhost ansible]$ ansible-playbook 04.kube-master.yml # 安装master节点
[root@localhost ansible]$ ansible-playbook 05.kube-node.yml # 安装node节点
[root@localhost ansible]$ ansible-playbook 06.network.yml # 部署集群网络
[root@localhost ansible]$ ansible-playbook 07.cluster-addon.yml # 安装集群插件

查看 k8s 集群信息:

[root@localhost ~]$ /opt/kube/bin/kubectl cluster-info              # 查看集群信息
[root@localhost ~]$ /opt/kube/bin/kubectl get nodes # 查看集群的node节点
[root@localhost ~]$ /opt/kube/bin/kubectl get componentstatus # 查看集群状态
[root@localhost ~]$ /opt/kube/bin/kubectl top node # 查看node节点使用资源的情况
[root@localhost ~]$ /opt/kube/bin/kubectl top pod --all-namespaces # 查看pod使用资源的情况

测试 DNS:

[root@localhost ~]$ /opt/kube/bin/kubectl run nginx --image=nginx --expose --port=80      # 创建 Nginx Service
[root@localhost ~]$ /opt/kube/bin/kubectl run busybox --rm -it --image=busybox /bin/sh # 进入 Nginx Service
/ # nslookup nginx.default.svc.cluster.local
Server: 10.68.0.2
Address: 10.68.0.2:53 Name: nginx.default.svc.cluster.local
Address: 10.68.21.154

扩展内容:

(1) 如何增加 Node 节点:https://github.com/gjmzj/kubeasz/blob/master/docs/op/AddNode.md
(2) 如何增加 Master 节点:https://github.com/gjmzj/kubeasz/blob/master/docs/op/AddMaster.md
(3) 如何升级集群:https://github.com/gjmzj/kubeasz/blob/master/docs/op/upgrade.md
(4) 如何修改VIP:https://github.com/gjmzj/kubeasz/blob/master/docs/op/ChangeVIP.md(5) 如何备份与恢复集群:https://github.com/gjmzj/kubeasz/blob/master/docs/op/cluster_restore.md
(5) 更多操作参考:https://github.com/gjmzj/kubeasz/tree/master/docs/op

Kubernetes 集群:规划与搭建的更多相关文章

  1. kubernetes集群简单实例搭建

    systemctl stop firewalld && systemctl disable firewalldvim /etc/selinux/configSELINUX=disabl ...

  2. kubeadm搭建kubernetes集群之一:构建标准化镜像

    使用docker可以批量管理多个容器,但都是在同一台电脑内进行的,这在实际生产环境中是不够用的,如何突破单机的限制?让多个电脑上的容器可以像单机上的docker-compose.yml管理的那样方便呢 ...

  3. 二进制部署kubernetes集群(上篇)

    1.实验架构 1.1.硬件环境 准备5台2c/2g/50g虚拟机,使用10.4.7.0/24 网络 .//因后期要直接向k8s交付java服务,因此运算节点需要4c8g.不交付服务,全部2c2g足够. ...

  4. 初试 Kubernetes 集群中使用 Traefik 反向代理

    初试 Kubernetes 集群中使用 Traefik 反向代理 2017年11月17日 09:47:20 哎_小羊_168 阅读数:12308    版权声明:本文为博主原创文章,未经博主允许不得转 ...

  5. 二进制搭建Kubernetes集群(最新v1.16.0版本)

    目录 1.生产环境k8s平台架构 2.官方提供三种部署方式 3.服务器规划 4.系统初始化 5.Etcd集群部署 5.1.安装cfssl工具 5.2.生成etcd证书 5.2.1 创建用来生成 CA ...

  6. 使用Kubeadm搭建高可用Kubernetes集群

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  7. Kubernetes集群搭建过程中遇到的问题

    1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating &quo ...

  8. elasticsearch系列八:ES 集群管理(集群规划、集群搭建、集群管理)

    一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...

  9. Kubernetes — 从0到1:搭建一个完整的Kubernetes集群

    准备工作 首先,准备机器.最直接的办法,自然是到公有云上申请几个虚拟机.当然,如果条件允许的话,拿几台本地的物理服务器来组集群是最好不过了.这些机器只要满足如下几个条件即可: 满足安装 Docker ...

随机推荐

  1. 【转】两款 Web 前端性能测试工具

    前段时间接手了一个 web 前端性能优化的任务,一时间不知道从什么地方入手,查了不少资料,发现其实还是蛮简单的,简单来说说. 一.前端性能测试是什么? 前端性能测试对象主要包括: HTML.CSS.J ...

  2. bom头解释方法和去掉方法

    什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也 ...

  3. USB学习笔记连载(十三):keil的配置环境

    在对USB设备的驱动名字进行更改时,需要利用keil软件对固件进行修改,并生成 .iic 文件烧录到CY7C68013A所带的外部EEPROM中,keil生成的 .hex文件只能烧录到 Cypress ...

  4. Opengl绘制我们的小屋(三)纹理绘制

    本准备先说光照相关实现,但是发现对那个模型实在看不下去了,于是先绘制纹理. 先看下基本纹理贴上去的显示效果.具体模型图请看上篇文章的实现,这篇只讲纹理实现. 我们常见的纹理绘制差不多如下,先写一个纹理 ...

  5. 第一个shell程序

    前言:我为什么又来学习shell呢?因为这个轻量级的编程小脚本语言能够帮我处理一些基于linux的复杂手工工作.真是一言难尽,学会一门又来一门!! 看了2天这个教程,试着写了一个小脚本,没啥技术含量, ...

  6. gcc -lpthread

    转自:http://www.cnblogs.com/suntp/p/6473751.html 如果用gcc编译使用了POSIX thread的程序时,通常需要加额外的选项,以便使用thread-saf ...

  7. Linq中string转int的方法

    Linq中string转int的方法   在做批量删除时,需把一串id值所对应的数据删除,调试出现问题: Linq语句中如果使用ToString()进行类型转换,编译时不会报错,但执行时会出现如下错误 ...

  8. linux中service的问题

    1.描述问题 2.解决方案 systemctl stop firewalld systemctl mask firewalld Then, install the iptables-services ...

  9. Spock集成入门

    本文基于SpringBoot 在pom.xml添加Spock依赖 <!-- test --> <dependency> <groupId>org.codehaus. ...

  10. RabbitMQ学习笔记(二):基础概念

    前言 上一篇已经通过springboot对rabbitmq的简单封装实现了消息的发送和消费,虽然功能简单,但已经大概了解了它的使用方法.接下来陆续介绍RabbitMQ中的几个核心概念:Queue,Ex ...