# kubernets native cloud 實踐
功能 | 組件 |
---|---
version|v1.13.5
master管理方式|kubespray
docker version|v18.03
docker Storage Driver|overlay
network plugins|flannedl(vxlan)
服務網關|ingress-nginx
CI/CD|jenkins
監控|prometheus-operator
日志| efk
rabbitmq|v3.17
redis-cluser|v5.0.2
### version
- 新版kube-proxy 使用ipvs 替換iptable 的nat 轉發。 實現方式和kube-router一樣
- dns 組件 由 core dns 替換 SkyDNS, dns解析性能提升
- 可實現磁盤i/o 的資源限制
### master 管理方式
- rancher 類似kubeadmin k8s核心組件都采用容器化方式部署。同時提供友好的UI 管理界面
- rancher 提供靈活的擴展方式
- rancher 過度依賴docker。 底層docker 出問題, 導致整個集群宕機
- kubespray k8s 核心組件使用二進制方式部署。
- kubespray 依賴ansible 實現靈活的擴展方式
> 個人偏向使用kubespray 管理集群服務,更加靈活可塑。
rancher 適合小規模場景使用。
### HA mode
- 常見方案 haproxy+keepalive
- kubespray及rancher 都支持HA 管理
### docker version
- v17.03 經過官方驗證
### docker Storage Driver
- centos7.5 默認kernel 以支持 overlay 驅動
### network plugins
- 在公有云可選方案 vxlan 或 gw-host
- Vxlan 可實現 跨域訪問。因為多次封包 性能有消耗
- gw-host 不能跨域訪問。依賴二層路由,性能優勢明顯
- 阿里云 aws 都有gw-host 專屬驅動。EX:ali-vpc
- [gw-host github項目地址](https://github.com/coreos/flannel/blob/master/Documentation/backends.md)
### 服務與發現
#### 第一種場景 user ---> service
- nginx-ingress
- NGINX 二次封裝 ,依賴 service name 實現服務自動注冊于發現
- 基本流程: user --> ingress --> service name --> pod
#### 第二種場景 service--> service
- 依賴 k8s 自身dns 服務 與 zookeeper 配置集中管理
- app1 service name地址注冊到 zookeeper EX: uniauth-server.default.svc.cluster.local
- app2 從zookeeper 獲取 service name 地址
#### nginx-ingress 與 kong ingress 對比
kong ingress 類似一個 api-getway
- 金絲雀發布
- 暫時無release
- [kong ingress 官方地址](https://getkong.org/)
> 個人覺得 kong ingress 會一統天下
#### Orchestrate Common Functionality

### ci/cd
#### 第一階段
- 套用點融當前ci 流程,使用yaml文件方式管理
- 應用配置文件無法剝離
- 應用回滾依賴 git branch
- 快速遷移服務能力較弱。
#### 第二階段
- 依賴helm 實現應用管理
- 應用配置集中管理
- helm依賴Deployment 實現版本回滾
- 實現服務快速部署能力,真正做到安裝即用
### 監控
Prometheus -operator
- 全面實現監控服務的自動發現
- 原生支持prometheus 集群部署
- 聚合報警功能
- 高效的查詢性能
[prometheus-operators實踐文檔鏈接](http://www.hmoore.net/huyipow/prometheus)

### 日志服務
- efk
- 在每一個pod 里面啟動一個fluentd ,通過pod 共享volume 實現日志的采集
- es實例化方式部署
- 方案設計
- 使用kubespray部署k8s集群
- 使用ingress 訪問dashboard v1.8.3
- 在 Kubernetes 中配置私有 DNS 和上游域名服務器(coredns forward)
- master 節點添加taint
- limitrang
- 配置私有倉庫
- 利用NFS動態提供Kubernetes后端存儲卷
- ingress 添加https 客戶端雙向認證
- 應用日采集
- eureka 遷移 k8s 集群
- 鏡像下載地址
- helm install
- Install istio
- zookeeper 集群部署
- 基于prometheus自定義rabbitmq—exporter指標HPA彈性伸縮
- nacos huaweicloud