目录

1 环境准备

1.1集群节点说明

1.2 主机关联设置

1.3网络环境设置

1.4集群详情

1.5 部署步骤

1.6 注意事项


1 环境准备

1.1集群节点规划

K8S对底层机器只有三点要求:

一是正确的操作系统,Ubuntu 16.04 / Debian9/CentOS 7/RHEL7/Fedora 25 / HypriotOS v1.0.1 其中一个都可以。比较常见的是Ubuntu或者CentOs。

二是硬件配置要求你至少有1GB的内存。

三是网络上要求集群里的节点之间网络互通。

只要满足这三个要求,无论是虚拟机、物理机还是云主机都是可以的。

对于集群节点规划,因为前期规划失误,导致后期各种返工,比较耗时。这是一个教训,我们再搭建集群之前一定要提交做好集群节点规划工作。

本文中的 etcd 集群、master 节点、node节点均使用下面这三台机器。

hostname IP地址 节点说明 虚拟机 组件配置
master01 192.168.72.143 主节点(复用节点) CentOS 7.2\CPU:2G\内存:2G\硬盘:20G etcd、kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy、docker
master02 192.168.72.144 主节点 CentOS 7.2\CPU:2G\内存:2G\硬盘:20G etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker
master03 192.168.72.145 主节点 CentOS 7.2\CPU:2G\内存:2G\硬盘:20G etcd、kube-apiserver、kube-controller-manager、kube-scheduler、docker

因为误删除操作,上面三台机器环境后来经过重新搭建,IP地址已发生变化,依次变更为:

192.168.0.143 master01

192.168.0.144 master02

192.168.0.145 master03

                                                                                   集群虚IP
VIP                                                           192.168.0.140

1.2 主机关联设置

【1】分别设置三台机器的永久主机名称,然后重新登录

# sudo hostnamectl set-hostname master01

# sudo hostnamectl set-hostname master02

# sudo hostnamectl set-hostname master03

【2】修改 /etc/hostname 文件,添加主机名和 IP 的对应关系

# vim /etc/hosts

192.168.72.143 master01

192.168.72.144 master02

192.168.72.145 master03

1.3网络环境设置

关闭网络管理服务

#systemctl stop NetworkManager.service

#systemctl disable NetworkManager.service

关闭防火墙

#systemctl disable firewalld

#systemctl stop firewalld

关闭SELinux

#vi etc/selinux/config

SELINUX=disabled

iptables策略配置

安装iptables.service

#yum install -y iptables-services

添加策略:

#vi /etc/sysconfig/iptables

新增以下端口:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 2379 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 2380 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 10250 -j ACCEPT

注释掉这俩行:

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

新增这两行:

-A INPUT -j ACCEPT

-A FORWARD -j REJECT

重启防火墙配置生效

systemctl restart iptables.service

设置防火墙开机启动

systemctl enable iptables.service

1.4集群详情

Kubernetes 1.14.0

Docker 3.18.09(yum安装)

Etcd 3.3.12

Flanneld 0.7 vxlan网络

TLS认证通信(所有组件,如etcd、kubernetes master和node)

RBAC授权

kublet TSL BoostStrapping

kubedns、dashboard、heapster\EFK集群插件

私有docker镜像仓库harbor

1.5 部署步骤

由于启用了TLS双向认证、RBAC授权等严格的安全机制,建议从头开始部署,而不要从中间开始,否则可能会认证、授权等失败!部署过程中需要有很多证书的操作,一定耐心操作。

※【1】创建TLS证书和密钥

※【2】创建kubeconfig文件

※【3】创建高可用etcd集群

※【4】安装kubectl命令行工具

※【5】部署master节点

※【6】部署node节点

※【7】安装kubedns插件

※【8】安装dashboadr插件

※【9】安装healster插件

※【10】安装EFK插件

1.6 注意事项

【1】由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部署,而不要从中间开始,否则可能会认证、授权等失败!

【2】部署过程中需要有很多证书的操作,请大家耐心操作

【3】该部署操作仅是搭建成了一个可用 kubernetes 集群,而很多地方还需要进行优化,heapster 插件、EFK 插件不一定会用于真实的生产环境中,但是通过部署这些插件,可以让大家了解到如何部署应用到集群上。

【4】自定义部署kubernetes时,如果想直接使用可执行程序命令,则需要配置环境变量:

export PATH=/opt/kubernetes/bin:$PATH

【5】所有组件均需要以下4个步骤:

(1)将kubernetes的二进制可执行文件复制到/opt/kubernetes/bin路径目录下

(2)创建systemd service启动服务文件,存放到/usr/lib/systemd/system路径目录下

(3)创建service中对应的配置参数文件,存放到/opt/kubernetes/config路径目录下

(4)生成的证书和秘钥,存放到/opt/kubernetes/ssl路径目录下

(5)将应用加入到开机启动项,并依次启动

systemctl daemon-reload

systemctl enable etcd

systemctl start etcd

systemctl enable kube-apiserver.service

systemctl start kube-apiserver.service

systemctl enable kube-controller-manager.service

systemctl start kube-controller-manager.service

systemctl enable kube-scheduler.service

systemctl start kube-scheduler.service

下载:wget https://github.com/kubernetes/kubernetes/releases/download/v1.14.3/kubernetes.tar.gz

从下面的地址下载kubernetes-server-linux-amd64.tar.gz

https://storage.googleapis.com/kubernetes-release/release/v1.14.3

(2)二进制文件方式部署Kubernetes高可用集群----------部署环境准备相关推荐

  1. 二进制方式搭建Kubernetes高可用集群(超丰富的组件概念理论总结)

    二进制方式部署Kubernetes高可用集群 文章目录 二进制方式部署Kubernetes高可用集群 1.环境准备 1.1.Kubernetes高可用集群部署方式 1.2.Kubernetes集群弃用 ...

  2. 一键部署Kubernetes高可用集群

    三台master,四台node,系统版本为CentOS7 IP ROLE 172.60.0.226 master01 172.60.0.86 master02 172.60.0.106 master0 ...

  3. kubespray容器化部署kubernetes高可用集群

    一.基础环境 docker版本1.12.6 CentOS 7 1.准备好要部署的机器 IP ROLE 172.30.33.89 k8s-registry-lb 172.30.33.90 k8s-mas ...

  4. Kubernetes 高可用集群部署

    原文链接:https://www.cpweb.top/2396 一.环境 Kubernetes 3个节点都为 master 角色,高可用方案采用 keepalived + haproxy,如果服务器在 ...

  5. Hadoop部署方式-高可用集群部署(High Availability)

    Hadoop部署方式-高可用集群部署(High Availability) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的高可用集群是建立在完全分布式基础之上的,详情请参 ...

  6. ansible-playbook部署K8S高可用集群

    通过ansible-playbook,以Kubeadm方式部署K8S高可用集群(多主多从). kubernetes安装目录: /etc/kubernetes/KubeConfig: ~/.kube/c ...

  7. Helm部署rancher 高可用集群

    Helm部署rancher 高可用集群 Helm简介 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Hel ...

  8. Mysql数据库(十一)——MHA高可用集群部署及故障切换

    Mysql数据库(十一)--MHA高可用集群部署及故障切换 一.MHA概述 二.MHA的组成 三.MHA的特点 四.案例环境 1.服务器配置 2.思路 3.关闭防火墙和安全机制,并进行主从配置 4.配 ...

  9. 干货 | 数据不丢失?有它就够了——金仓KingbaseES高可用集群部署

    可用性是数据库的重要指标之一,高可用集群是保障数据不丢失.服务可用的主要措施之一.下面将从部署维度阐晰金仓数据库KingbaseES如何打造高可用集群. 高可用架构基础 实践中,通常让多个数据库服务器 ...

  10. 部署Redis高可用集群

    目录 部署Redis高可用集群 Redis集群环境 拓扑结构 IP地址 环境准备 工作原理 创建Redis集群 部署管理主机 redis-trib.rb脚本 redis服务器开启集群功能 管理主机创建 ...

最新文章

  1. 的函数原型_相信我,跟着这个文章学习JS原型,你一定能看得懂
  2. centos中的mysql安装配置,Linux下安装配置MySQL
  3. Flutter实战视频-移动电商-59.购物车_计算商品价格和数量
  4. Single Number
  5. memchace监控统计
  6. ibm java_IBM i 上Java 虚拟机简介
  7. 头部数据人才24小时图鉴
  8. Spring系列(六):@Conditional注解用法介绍
  9. iOS 开发线程 gcd
  10. 如何拯救「大泥球」架构?人人车Android客户端架构演进实录
  11. java实现小写金额转换大写金额
  12. 3D点云深度学习综述
  13. 手机话费充值api接口 话费充值功能接入
  14. 安装miktex+winedit
  15. 利用树莓派搭建校园网种子站
  16. 冒泡法排序(从小到大)
  17. AD7606系列ADC的相关内容
  18. 创建型设计模模式---原型模式
  19. python pyqtgraph绘图库-绘制图形
  20. 转:Redis监控技巧

热门文章

  1. 不同数据量下主键类型的选择
  2. 分布式事务解决方案之TX-LCN的使用
  3. LNMT、LAMT架构简单实例
  4. 多线程01,线程基础知识
  5. BigDecimal的精度舍入模式详解
  6. [算法题] 安排会议室——贪心算法的应用
  7. L01-03:python学习之控制语句
  8. 类/对象/构造函数/析构函数
  9. C1WebChart 图形化处理。
  10. vue-loader was used without the corresponding plugin. Make sure to include VueLoad……