本篇紀錄個人 2021 年的 K8S 建置的基礎內容。
基本服務建置
以下內容是一個單位服務的 k8s 基礎設施:
- configmap 提供服務互相共享設定
- deployment 描述應用程式的 pod 和 deployment
- ingress API 流量進入點
- secrets 小秘密
- service 建立 deployment 服務,可以被自動發現,讓流量流進 Pods,可以是 ClusterIP、LoadBalance、NodePort
- others 其他相依服務: 像是 Redis..., xxx_agent
- namespace 命名空間
基礎設施上的關聯性,依照 API 流入進行分層:
- namespace (大家都需要在特定的 namespace)
- ingress (網路流量入口)
- service (流量是透過 service 找到對應的 pod 來分流)
- deployment (應用程式)
- secrets (秘密檔案)
- configmap (一般設定檔案)
- others
詳情檔案可以參考:
https://github.com/hpcslag/infrastructure_boilerplate/tree/main/classical_kubernetes
套用設定直接輸入:
kubectl apply -f .
就可以把整個目錄的資源套用上去
跨 namespace 存取資源的 FQDN 如何設定,以 Jaeger Agent Endpoint 為例
一般就是直接用 service name,k8s 可以自己做服務發現,但如果做成集中式 tracing, logging 日誌服務,則需要透過加一層 DNS Name 來做服務發現。
舉例像是都在同一個 namespace 要存取 service, yaml 上的 service name 叫做: jaeger-agent,則同一個 namespace 服務只要輸入 endpoint: udp://jaeger-agent:xxxx 就可以被發現了。
但假設為跨 namespace 的服務, endpoint 就會像是: udp://jaeger-agent.<namespace>.svc.cluster.local:xxxx。
References:
Book - Kubernetes in action
沒有留言:
張貼留言