# 在CentOS7上部署kubernetes1.7.6集群
本系列文档介绍使用二进制部署 kubernetes 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群,同时开启了集群的TLS安全认证;在部署的过程中,将详细列出各组件的启动参数,给出配置文件,详解它们的含义和可能遇到的问题。部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题。所以本文档主要适合于那些有一定 kubernetes 基础,想通过一步步部署的方式来学习和了解系统配置、运行原理的人。本系列系文档适用于 CentOS 7 及以上版本系统由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部署,否则可能会认证、授权等失败!
> 注:本文档中不包括docker和私有镜像仓库的安装。
# 提供所有的配置文件
## 集群安装时所有组件用到的配置文件,包含在以下目录中:
- conf: service的环境变量配置文件
- manifest: kubernetes组件包的yaml文件
- systemd :systemd serivce服务启动配置文件
> 配置文件链接下载地址: [下载](https://gitee.com/huyipow/k8s-deploy.git)
# 集群详情
- Kubernetes 1.7.6
- Docker 17.06.0-ce(使用yum安装)
- Etcd 3.2.1
- Flanneld 0.8 vxlan 网络
- TLS 认证通信 (所有组件,如 etcd、kubernetes master 和 node )
- RBAC 授权
- kublet TLS BootStrapping
- kubedns、dashboard、使用Prometheus监控Kubernetes集群和应用、EFK(elasticsearch、fluentd、kibana) 集群插件
- 私有docker镜像仓库harbor(请自行部署,harbor提供离线安装包,直接使用docker-compose启动即可
# 环境说明
![image](https://i.imgur.com/ND5oG8Z.png)
在下面的步骤中,我们将在三台CentOS系统的虚拟机上部署具有三个节点的kubernetes1.7.6集群。
角色分配如下:
Master:172.16.200.100
Node:172.16.200.100、172.16.200.101、172.16.200.102
> 注意:172.20.0.113这台主机master和node复用。所有生成证书、执行kubectl命令的操作都在这台节点上执行。一旦node加入到kubernetes集群之后就不需要再登陆node节点了
# 安装前的准备
- 在node节点上安装docker 17.06.0-ce
- 关闭所有节点的SELinux
- 清空默认系统防火墙策略
- 准备harbor私有镜像仓库
- 内核参数修改
cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# 步骤介绍
1. 创建 TLS 证书和秘钥
1. 创建kubeconfig 文件
1. 创建高可用etcd集群
1. 安装kubectl命令行工具
1. 部署master节点
1. 部署node节点
1. 安装kubedns插件
1. 安装dashboard插件
1. 使用Prometheus监控Kubernetes集群和应用
1. 安装EFK插件
# 提醒
1. 由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部署,而不要从中间开始,否则可能会认证、授权等失败!
1. 部署过程中需要有很多证书的操作,请大家耐心操作,不明白的操作可以参考本书中的其他章节的解释。
1. 该部署操作仅是搭建成了一个可用 kubernetes 集群,而很多地方还需要进行优化,heapster 插件、EFK 插件不一定会用于真实的生产环境中,但是通过部署这些插件,可以让大家了解到如何部署应用到集群上。
- 第一章 kubernetes 功能介绍
- 第二章 在CentOS上部署kubernetes1.7.6集群
- 第三章 创建TLS证书和秘钥
- 第四章 安装kubectl命令行工具
- 第五章 创建kubeconfig 文件
- 第六章 etcd 集群部署
- 第七章 部署k8s-master-v1.7.6节点
- 第八章 部署k8s-v1.7.6 node 节点
- 第九章 kubectl 操作示例
- 第十章 在kubernetes 部署第一个应用
- 第十一章 kubernetes之pod 调度
- 第十二章 K8S服务组件之kube-dns&Dashboard
- 第十三章 Kubernetes中的角色访问控制机制(RBAC)支持
- 第十四章 部署nginx ingress
- 第十五章 使用Prometheus监控Kubernetes集群和应用
- 第十六章 使用helm 应用部署工具
- 第十七章 kubernetes 从1.7 到1.8升级记录
- 第十八章 在kubernetes 使用ceph
- 第十九章 基于 Jenkins 的 CI/CD(一)
- 第二十章 基于jenkins的CI/CD(二)
- 第二十一章 基于prometheus自定指标HPA弹性伸缩