# 在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啟動即可
# 環境說明

在下面的步驟中,我們將在三臺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彈性伸縮