驗證Kubernetes的服務發現機制

驗證Kubernetes的服務發現機制

文章目錄

  • 驗證Kubernetes的服務發現機制
    • @[toc]
    • 一、驗證基于環境變量的服務發現機制

服務發現是讓客戶端能夠以固定的方式獲取到后端Pod訪問地址的機制。下面驗證環境變量和DNS這兩種機制。

一、驗證基于環境變量的服務發現機制

對于需要訪問服務的Pod,必須在該Pod創建之前創建Service。

(1)創建Service。

[root@master ~]# vim nginx-deploy-service.yaml
[root@master ~]# cat nginx-deploy-service.yaml 
apiVersion: apps/v1                		# 版本號
kind: Deployment                    	# 類型為Deployment
metadata:                            	# 元數據name: nginx-deploy          labels:                             	# 標簽app: nginx-deploy
spec:                                 	# 詳細信息replicas: 2                        	# 副本數量selector:                          	# 選擇器,指定該控制器管理哪些PodmatchLabels:                     	# 匹配規則app: nginx-podtemplate:                          	# 定義模板,當副本數量不足時會根據模板定義創建Pod副本metadata:labels:app: nginx-pod                  # Pod的標簽spec:containers:                     	# 容器列表(本例僅定義一個容器)- name: nginx                   	# 容器的名稱image: nginx:1.14.2          	# 容器所用的鏡像ports:- name: nginx-portcontainerPort: 80         	# 容器需要暴露的端口---
apiVersion: v1
kind: Service
metadata:name: nginx-svc      					#設置service的顯示名字
spec:ports:- port: 8080              			#讓集群知道service綁定的端口targetPort: 80           			#目標Pod的端口selector:app: nginx-pod  					#指定pod的標簽[root@master ~]# 

(2)執行一次性創建Deployment和Service

[root@master ~]# kubectl apply -f nginx-deploy-service.yaml 
deployment.apps/nginx-deploy created
service/nginx-svc created
[root@master ~]# 

(3)基于鏡像創建一個Pod

[root@master ~]# kubectl run nginx --image=nginx:1.14.2
pod/nginx created
[root@master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx                           1/1     Running   0          3s
nginx-deploy-59c566bbbb-cm4bz   1/1     Running   0          17m
nginx-deploy-59c566bbbb-n7qsz   1/1     Running   0          17m

(4)執行以下命令列出該Pod的環境變量,并篩選出含NGINX的環境變量

[root@master ~]# kubectl exec nginx -- printenv | grep NGINX
NGINX_SVC_PORT_8080_TCP=tcp://10.108.118.39:8080
NGINX_SVC_SERVICE_PORT=8080
NGINX_SVC_PORT_8080_TCP_PROTO=tcp
NGINX_SVC_SERVICE_HOST=10.108.118.39
NGINX_SVC_PORT=tcp://10.108.118.39:8080
NGINX_SVC_PORT_8080_TCP_PORT=8080
NGINX_SVC_PORT_8080_TCP_ADDR=10.108.118.39
NGINX_VERSION=1.14.2-1~stretch
[root@master ~]# 

此pod的環境變量中就包含以上Service的主機地址和端口,可以引用這些環境變量來訪問Service

(5)刪除該pod

[root@master ~]# kubectl delete po nginx
pod "nginx" deleted
[root@master ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-59c566bbbb-cm4bz   1/1     Running   0          19m
nginx-deploy-59c566bbbb-n7qsz   1/1     Running   0          19m
[root@master ~]# 

(6)創建測試用的名稱空間

[root@master ~]# kubectl create namespace test-ns
namespace/test-ns created
[root@master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   26d
kube-node-lease   Active   26d
kube-public       Active   26d
kube-system       Active   26d
test-ns           Active   3s

(7)創建一個屬于test-ns名稱空間的pod

[root@master ~]# kubectl run nginx --image=nginx:1.14.2 -n test-ns
pod/nginx created

(8)查看名稱空間test-ns中名稱為nginx的pod相關環境變量

[root@master ~]# kubectl exec nginx -n test-ns -- printenv | grep NGINX
NGINX_VERSION=1.14.2-1~stretch

可以發現沒有與Service相關的環境變量,這是因為該pod與該service分屬不同的名稱空間,該service屬于默認的名稱空間,彼此隔離,無法訪問

(9)刪除新創建的pod

[root@master ~]# kubectl delete pod nginx -n test-ns
pod "nginx" deleted
[root@master ~]# kubectl get pod  -n test-ns
No resources found in test-ns namespace.
[root@master ~]# kubectl delete -f nginx-deploy-service.yaml 
deployment.apps "nginx-deploy" deleted
service "nginx-svc" deleted

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76939.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FPGA系列之DDS信號發生器設計(DE2-115開發板)

一、IP核 IP(Intellectual Property)原指知識產權、著作權等,在IC設計領域通常被理解為實現某種功能的設計。IP模塊則是完成某種比較復雜算法或功能(如FIR濾波器、FFT、SDRAM控制器、PCIe接口、CPU核等)并且參數可修改的電路模塊&#xff0c…

Java單例模式詳解:實現線程安全的全局訪問點

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、什么是單例模式? 單例模式(Singleton Pattern)是一種創建型設計模式,它保證一個類僅有一個實例&#xff…

JVM 生產環境問題定位與解決實戰(七):實戰篇——OSSClient泄漏引發的FullGC風暴

本文已收錄于《JVM生產環境問題定位與解決實戰》專欄,完整系列見文末目錄 引言 在前六篇博客中,我們系統性地學習了 JVM 生產環境問題定位與解決的全套工具鏈,涵蓋jps、jmap、jstat、jstack、jcmd 等基礎工具的使用技巧,深入剖析…

Spark集群搭建-spark-local

(一)安裝Spark 安裝Spark的過程就是下載和解壓的過程。接下來的操作,我們把它上傳到集群中的節點,并解壓運行。 1.啟動虛擬機 2.通過finalshell連接虛擬機,并上傳安裝文件到 /opt/software下 3.解壓spark安裝文件到/op…

Java 異常 SSLException: fatal alert: protocol_version 全解析與解決方案

在 Java 網絡通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 協議版本不兼容異常。本文結合 Java 官方規范、TLS 協議標準及實戰經驗,提供體系化解決方案,幫助開發者快速定位并解決協議版本沖突問題。 一、異常本質&…

虛擬列表技術深度解析:原理、實現與性能優化實戰

虛擬列表技術深度解析:原理、實現與性能優化實戰 引言 在當今數據驅動的互聯網應用中,長列表渲染已成為前端開發的核心挑戰。傳統的一次性全量渲染方式在數據量超過千條時,往往導致頁面卡頓、內存飆升等問題。虛擬列表(Virtual L…

2025-04-20 李沐深度學習4 —— 自動求導

文章目錄 1 導數拓展1.1 標量導數1.2 梯度:向量的導數1.3 擴展到矩陣1.4 鏈式法則 2 自動求導2.1 計算圖2.2 正向模式2.3 反向模式 3 實戰:自動求導3.1 簡單示例3.2 非標量的反向傳播3.3 分離計算3.4 Python 控制流 硬件配置: Windows 11Inte…

Redis的使用總結

Redis 核心使用場景 緩存加速 高頻訪問數據緩存(如商品信息、用戶信息) 緩解數據庫壓力,提升響應速度 會話存儲 分布式系統共享 Session(替代 Tomcat Session) 支持 TTL 自動過期 排行榜/計數器 實時排序&#x…

富文本編輯器實現

🎨 富文本編輯器實現原理全解析 📝 基本實現路徑圖 #mermaid-svg-MO1B8a6kAOmD8B6Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MO1B8a6kAOmD8B6Y .error-icon{fill:#552222;}#mermaid-s…

LeetCode熱題100——283. 移動零

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ,必須在不復制數組的情況下原地對數組進行操作。 示例 1: 輸入: nums [0,1,0,3,12] 輸出: [1,3,12,0,0] 示例 2: 輸入: nums [0] 輸出:…

與Ubuntu相關命令

windows將文件傳輸到Ubuntu 傳輸文件夾或文件 scp -r 本地文件夾或文件 ubuntu用戶名IP地址:要傳輸到的文件夾路徑 例如: scp -r .\04.py gao192.168.248.129:/home/gao 如果傳輸文件也可以去掉-r 安裝軟件 sudo apt-get update 更新軟件包列表 sudo apt insta…

Kafka 在小流量和大流量場景下的順序消費問題

一、低流量系統 特點 消息量較少,吞吐量要求低。系統資源(如 CPU、內存、網絡)相對充足。對延遲容忍度較高。 保證順序消費的方案 單分區 單消費者 將消息發送到單個分區(例如固定 Partition 0),由單個…

小程序 GET 接口兩種傳值方式

前言 一般 GET 接口只有兩種URL 參數和路徑參數 一:URL 參數(推薦方式) 你希望請求: https://serve.zimeinew.com/wx/products/info?id5124接口應該寫成這樣,用 req.query.id 取 ?id5124: app.get(&…

小白學習java第14天(中):數據庫

1.DML data manage language數據庫管理語言 外鍵:外鍵是什么?就是對其進行表與表之間的聯系,就是使用的鍵進行關聯! 方法一:我們在數據庫里面就對其進行表與表之間的連接【這種是不建議的,我不太喜歡就是將數據里面弄…

NO.95十六屆藍橋杯備戰|圖論基礎-單源最短路|負環|BF判斷負環|SPFA判斷負環|郵遞員送信|采購特價產品|拉近距離|最短路計數(C++)

P3385 【模板】負環 - 洛谷 如果圖中存在負環&#xff0c;那么有可能不存在最短路。 BF算法判斷負環 執?n輪松弛操作&#xff0c;如果第n輪還存在松弛操作&#xff0c;那么就有負環。 #include <bits/stdc.h> using namespace std;const int N 2e3 10, M 3e3 1…

K8s pod 應用

/** 個人學習筆記&#xff0c;如有問題歡迎交流&#xff0c;文章編排和格式等問題見諒&#xff01; */ &#xff08;1&#xff09;編寫 pod.yaml 文件 pod 是 kubernetes 中最小的編排單位&#xff0c;一個 pod 里包含一個或多個容器。 apiVersion: v1 # 指定api版本 kind…

Oracle創建觸發器實例

一 創建DML 觸發器 DML觸發器基本要點&#xff1a; 觸發時機&#xff1a;指定觸發器的觸發時間。如果指定為BEFORE&#xff0c;則表示在執行DML操作之前觸發&#xff0c;以便防止某些錯誤操作發生或實現某些業務規則&#xff1b;如果指定為AFTER&#xff0c;則表示在執行DML操作…

Filename too long 錯誤

Filename too long 錯誤表明文件名超出了文件系統或版本控制系統允許的最大長度。 可能的原因 文件系統限制 不同的文件系統對文件名長度有不同的限制。例如&#xff0c;FAT32 文件名最長為 255 個字符&#xff0c;而 NTFS 雖然支持較長的文件名&#xff0c;但在某些情況下也…

網絡不可達network unreachable問題解決過程

問題&#xff1a;訪問一個環境中的路由器172.16.1.1&#xff0c;發現ssh無法訪問&#xff0c;ping發現回網絡不可達 C:\Windows\System32>ping 172.16.1.1 正在 Ping 172.16.1.1 具有 32 字節的數據: 來自 172.16.81.1 的回復: 無法訪問目標網。 來自 172.16.81.1 的回復:…

Python設計模式:備忘錄模式

1. 什么是備忘錄模式&#xff1f; 備忘錄模式是一種行為設計模式&#xff0c;它允許在不暴露對象內部狀態的情況下&#xff0c;保存和恢復對象的狀態。備忘錄模式的核心思想是將對象的狀態保存到一個備忘錄對象中&#xff0c;以便在需要時可以恢復到之前的狀態。這種模式通常用…