前言
本文介绍使用二进制部署最新 kubernetes v1.6.2 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群。
在部署的过程中,将详细列出各组件的启动参数,它们的含义和可能遇到的问题。
部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题。
所以本文档主要适合于那些有一定 kubernetes 基础,想通过一步步部署的方式来 学习和了解系统配置、运行原理的人。
本系列系文档适用于 CentOS 7、Ubuntu 16.04 及以上版本系统,由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部 署,否则可能会认证、授权等失败!
注:本文中不包括docker和私有镜像仓库的安装,安装说明中使用的镜像来自 Google Cloud Platform,中国大陆用户若无法访问请自行选择其他镜像仓库备份。
准备
主机角色分配
IP | Roles | |
---|---|---|
172.20.0.112 | Harbor(私有镜像仓库) | |
172.20.0.113 | master、node、kube-piserver、kube-controller-managerkube、scheduler、kubelet、kube-proxy、etcd、flannel | |
172.20.0.114 | node、kubectl、kube-proxy、flannel、etcd | |
172.20.0.115 | node、kubectl、kube-proxy、flannel、etcd |
集群详情
- OS:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.11.6.el7.x86_64
- Kubernetes 1.6.0+(最低的版本要求是1.6)
- Docker:建议使用 Docker CE,请勿使用 docker-1.13.1-84.git07f3374.el7.centos.x86_64 版本,查看详情
- Etcd 3.1.5
- Flannel 0.7.1 vxlan或者host-gw 网络
- TLS 认证通信 (所有组件,如 etcd、kubernetes master 和 node)
- RBAC 授权
- kubelet TLS BootStrapping
- kubedns、dashboard、heapster(influxdb、grafana)、EFK(elasticsearch、fluentd、kibana) 集群插件
- 私有docker镜像仓库harbor(请自行部署,harbor提供离线安装包,直接使用docker-compose启动即可)
安装前的准备
在node节点上安装docker1.12.5
直接使用
yum install docker
关闭所有节点的SELinux
永久方法 – 需要重启服务器
修改
/etc/selinux/config
文件中设置SELINUX=disabled ,然后重启服务器。临时方法 – 设置系统参数
使用命令
setenforce 0
附: setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 设置SELinux 成为permissive模式
准备harbor私有镜像仓库
步骤介绍
- 创建 TLS 证书和秘钥
- 创建kubeconfig 文件
- 创建高可用etcd集群
- 安装kubectl命令行工具
- 部署master节点
- 安装flannel网络插件
- 部署node节点
- 安装kubedns插件
- 安装dashboard插件
- 安装heapster插件
- 安装EFK插件
提醒
- 由于启用了 TLS 双向认证、RBAC 授权等严格的安全机制,建议从头开始部署,而不要从中间开始,否则可能会认证、授权等失败!
- 部署过程中需要有很多证书的操作,请大家耐心操作,不明白的操作可以参考本书中的其他章节的解释。
- 该部署操作仅是搭建成了一个可用 kubernetes 集群,而很多地方还需要进行优化,heapster 插件、EFK 插件不一定会用于真实的生产环境中,但是通过部署这些插件,可以让大家了解到如何部署应用到集群上。
注:本安装文档参考了 opsnull 跟我一步步部署 kubernetes 集群