CNTUG Meetup #19
Session 1. 牛牛帶你了解 Kubernetes 網路功能與原理
- Kubernetes
- Distributing algor.
Functionality
What Is Load Balancing?
Distribute Algor.
- Random
- Round Robin
- Hash Header
- Server Status
Special Protocol
True/False?
- Kubernets service (L4)
- Kubernets ingress (L7)
Typcial Implementaion
- NGINX
- 以Load-balancer作為轉接點
- NAT內網連Server(可不使用加密連線)
- NAT外網連Client(必須加密、需要憑證)
- 新型的協定看不懂
- Client-Side
- 由client決定怎麼做Load-balancing
- 中間者作為Address list provider
- Real use caes: gRPC (multiple gRPC request on the same TCP connection)
LoadBalancing gRPC for Kubernetes Cluster Services
- Middleware
- Proxy
- NGINX
- 中間者做轉送工作,兩邊是兩條連線
- 最重要是Load balancer本身是否看得懂協定
- Transparency
- 中間者偷偷改封包header
- 同一條TCP connection
- Kubernetes的Service就是使用這種方式(ClusterIP)
Default of K8S setting
- K8S service
- 預設使用Iptables
- 管理所有iptables
- 定期清除所有nodes iptables rule再新增
- 使用機率來分散流量
- 由於是一層一層用機率去選擇,所以使用在比較大的環境(如pod很多),會有很多條iptables rule比對,效能比較差
Conntrack Linux Kernel helps you
- 只有第一包SYN包 紀錄更改
- 看懂也無法做
- TCP 3-way handshake還沒開始送資料
- 必須在開始傳送資料時才能看到L7封包
- 而且任何更改protocol header會造成TCP得重新建立連線
- 改成使用UDP就可以達到consistent connection
- 因為UDP沒有 3-way handshake,會直接傳資料
- 可以直接在linux kernel 用iptables module寫判斷式去抓UDP的data,然後根據data執行不同iptables rule。
Session 2. Enhanced Security & Visibility in Microservice Based Architecture
Microservices
- Monolithic -> Microservices
- Load Balancer -> ADC-WAF
- K8S ingress (App. delivery container)
- 3-way handshake後觀察封包 做LB
- WAF:web app. firewall
- Time series distribution
- Secure Service Mesh
- tranditional FW -> 將所有服務經過Secure Mesh FW
- Access Control Between microservices
- transparent proxy
- level control
- 跨node
- Harmony Controller
- 控制管理所有的 南北(N-S traffic)、東西向(E-W traffic) 的 ADC (控管所有 policy)
- LADC 會將 Pods(每個服務)連線資訊等傳給這個控制器,來做統整、控制、與顯示。
- A10 Kubernetes connector
- 與 harmony controller 互動
- implemented ingress
- 主要工作為 monitor 目前 Pods 的活動,讓 controller 能夠依據這些訊息達到 "自動化"
讓安全與分析的處理變得更簡單 - 產品宗旨(於微服務的管理上)
主要的 component:
- LADC (主要因為商用環境中的流量為 L7,因此普通的 load balancer 是沒有辦法使用)
- Harmony controller (管理所有 Pods 的行為、與提供相關的可視化分析結果)
- Kubernetes connector (提供 controller 底下 Pods 相關的資訊)
Session 3. Rancher Pipeline 以及 Kubenetes 在大流量服務的部署經驗
Why we use Rancher ?
- 支援不同Orchestration Provider, 可以管不同環境的K8s
RKE 自建整個集群
- 三台機器就可以構成Cluster, LB用L7沒有關係, 但要自己帶特殊header
- 可以使用HelmChart install Rancher
- 如果使用一台機器Loading會太重,因為RANCHER做了很多事情
Kubenetes integrates with SonarQube
- Unit Tests -> sonar scan -> build -> deploy
- Pushed microservice setting to Github -> use ARGO CD to update pods
Kustomize
- Define configMap
- Base + Overlays to separate environments
- Dynamically replace images' tag name
- JSON Patch
Drone
- Simoutaneously run unrelated pipeline
Argo CD
Rancher Pipeline
- No need to install the other things else
- Support GitHub, GitLab, GitBucket, …etc
- Rancher pipeline will set up a docker registry, minio and jenkins
Pressure Test
what need to be notice
- Test resources limitation by pressure tests
Sessionn 4. How SDN and Cloud Native Drive Access Network
What's open networking from
- focus on hardware
- Design on chips (P4 language)
- SDN is different from open networking
What's MEC
Broadband Access(寬頻網路實體連線)
-
PON System
-
OLT 機箱is a bottleneck when the traffic comes up, ONT matches to ONT, if you want to change vendor, you'll need to change your system.
-
vOLT Hardware Abstract (VOLTHA)
- 將OLT抽象化:方便依照使用者數量啟動所需的資源
- 翻譯的部分再southbound adapters,由各廠商提供的。
- 以前的OLT跟ONT都要配合(使用同一家),都會被綁死,透過這種方式可以結合不同廠商的OLT,ONT。
-
OB-BAA
-
R-CORD(Detail-oriented architect)
-
SEBA - base on VOLTHA, from ONF
- offload
- multiple access solution
-
ONF COMAC
- Moble access Edge Computing 改變名稱 Mobile Multi access edge computing
Challenges
- 補齊傳統功能了嗎?
- 傳統load balancing使用IBGP、OSPF是否能支援
- 價錢比較
- 安全性問題
- 與舊系統整合
- 政治問題,電信商思維相對保守,很怕出問題
Q&A