FuFu KK8s
  • K~K8s index
  • Kubernetes 的基礎世界
  • Why container is not Docker
  • Startup Local Kubernetes via Minikube
  • K8s Master node Component 介紹
  • NameSpace、Deployments 概念說明
  • 常見的 kubectl 指令
  • 回顧第一次部署,淺談 Pod、Deployment
  • 回顧第一次部署,淺談 Service
  • 今日來介紹 Pod 靜態文件~ Manifest
  • Pod 的健康檢查方式
  • Pod 的健康檢查方式 Part-2
  • Pod 的資源請求、上限
  • Pod 資料,如何持久化存放、讀取
  • Pod 副本管理~ 描述 ReplicaSet 控制器
  • Pod 副本管理~ 實作篇
  • 淺談 DaemonSet,及相對 ReplicaSet 的差異
  • 來說說 Label
  • 從 Label 再回頭談 Service
  • Service 續集之 Cluster IP、Kube-proxy、LoadBalancer
  • 從 Service 發現 K8s 網路層全貌
  • Container Data Persistent
  • 發現、初談 StatefulSet
  • 再談 StatefulSet
  • 認識 ConfigMap
  • 第一次使用 Play with Kubernetes
  • 手工 Installing kubeadm
  • 手工 Installing CRI-O、kubeadm init
  • 繼上篇,排查 kubelet、kubeadm init 問題
  • Installing a pod network add-on
  • K8s add Nodes(join)
  • 驗證自建的 K8s
  • 筆記
    • kubectl get 筆記
    • kubectl 部署筆記
    • kubectl describe nodes
  • 實務記憶篇
    • 整理下記憶
    • 有哪些 Kubernetes 雲端服務
    • 如何從本機連線至 GKE Pod
    • GCP Memorystore 服務介紹
    • 如何連線至 GCP Memorystore
    • GCP Cloud SQL 服務介紹
    • 如何連線至 Cloud SQL
    • 關於 GCP VPC 網路
    • HELM 工具用途
    • 臨時題目:查修 prometheus
    • 繼續離題:繼續查修Prometheus
    • 臨時題目:限定 Pod 訪問外網時,固定 public ip
    • K8s 監控數據來源 Prometheus
    • 監控要告警啊 AlertManager
    • 監控要有圖表啊 Grafana
    • Grafana收集Kubernetes系統資訊
    • 系統 Log 資料
    • 系統 Log 資料收集至 EFK
    • 關於 EFK 角色
    • 系統 Log 資料 - fluent-bit 串接
    • 開放網站對外存取
    • 網站提供 https 安全連線服務 - 憑證管理
    • 網站提供 https 安全連線服務 - 憑證與Ingress整合
    • 網站提供 https 安全連線服務 - Istio 範例
    • 需要額外的 非http 連線
    • Istio 初略介紹
    • Istio 整合 Certmanager DNS01
    • 番外篇:Istio 如何限制訪問來源
    • 番外篇:如何擴充 PV PVC storage size
    • 番外篇:如何利用 Binlog 還原資料庫
  • Helm 實務學習心得
    • Helm requirements 見解
    • 同環境,一次部署多個相同App
  • Python
    • 11-1 Firebase 資料庫簡介
Powered by GitBook
On this page
  • 查看 Service 資訊
  • 開放 Service 給予外部存取

回顧第一次部署,淺談 Service

Previous回顧第一次部署,淺談 Pod、DeploymentNext今日來介紹 Pod 靜態文件~ Manifest

Last updated 6 years ago

,提到 deployment 物件,此物件與建立 service 物件有連帶關係的~ 透過回顧,可以知道透過kubectl export指令,即會建立 service 物件。

# Expose it as a new Kubernetes Services
[user@minikube ~]$ kubectl expose deployment hello-minikube --type=NodePort service/hello-minikube exposed

查看 Service 資訊

[user@minikube ~]$ kubectl get services -o wide
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
hello-minikube   NodePort    10.97.219.147   <none>        8080:31472/TCP   3d    run=hello-minikube
kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP          5d    <none>
[user@minikube ~]$

[user@minikube ~]$ kubectl describe services hello-minikube
Name:                     hello-minikube
Namespace:                default
Labels:                   run=hello-minikube
Annotations:              <none>
Selector:                 run=hello-minikube
Type:                     NodePort
IP:                       10.97.219.147
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  31472/TCP
Endpoints:                172.17.0.4:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

上面的資訊中~透過 kubectl get services 會看見兩個 service~ 其中,kubernetes 是由 K8s 叢集自動建立的,其用途就是讓應用程式與 API 溝通。 看下項目 hello-minikube service 物件:

  • 欄位 SELECTOR 中可以看到 “run=hello-minikube” 資訊,這是由 deployment 物件中 Selector 定義並提取出來。

  • 欄位 PORT(S) 看到 8080 埠,這是由 deployment 物件中 Port 定義並提取出來。

  • 10.97.219.147 此 IP 是虛擬 IP,存在於 pod 內的網路資訊。

參考書籍: Kubernetes 建置與執行 書中 P.78~79 內容

開放 Service 給予外部存取

在預設情況下,pod 物件僅能於叢集之間存取,但例如此篇案例 hello-minikube 是個 http 應用程式 很多場景下,HTTP 應用層需要開放“埠”端口讓外部存取。

  • 有個簡單方式是使用--type=NodePort方式,透過 service 讓 K8s node 隨機監聽一個埠端口。

    • 讓你無需關注 pod 運作在哪個 K8s node。

    • NodePort: <unset> 31472/TCP 就是隨機產生的“埠”端口。

參考書籍: Kubernetes 建置與執行 書中 P.83 內容

上一篇
此篇