k8s業務程序聯調工具-KtConnect

概述

原理

工具作用是建立了一個從本地到集群的單向VPN,根據VPN原理,打通兩個內網必然需要借助一個公共中繼節點,ktconnect工具巧妙的利用k8s原生的portforward能力,簡化了建立連接的過程,apiserver間接起到了中繼節點的作用。

場景:

研發本地訪問測試環境用于調整測試業務程序。研發本地訪問生產環境用于排查故障

兩種模式:

?架構圖

客戶端安裝

下載安裝包

kt-connect/docs/zh-cn/guide/downloads.md at master · alibaba/kt-connect · GitHub

根據提示選擇不同的客戶端就好了,這里我是win直接運行命令?

C:\Users\shuaige\Desktop\離線包\k8s>ktctl.exe --version
ktctl version 0.3.7

配置ktctl的環境變量?

Win+R輸入sysdm.cpl打開系統屬性 → 高級 → 環境變量。

變量

變量名:KUBERNETES_MASTER  
變量值:https://10.10.101.35:6443

驗證配置

# 運行命令
echo %KUBERNETES_MASTER%# 返回結果
https://10.10.101.35:6443

變量

變量名:KUBECONFIG  
變量值:C:\Users\<用戶名>\.kube\config  

配置變量

準備配置文件

將集群的kubeconfig文件(如admin.conf)復制到C:\Users\<用戶名>\.kube\config

~]# cat /etc/kubernetes/admin.conf
apiVersion: v1
clusters:
- cluster:certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJTC9Ia0c4WEc3cHN3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRBMU1qZ3dPREUwTlRSYUZ3MHpOVEExTWpZd09ERTVOVFJhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUROcFljanplYUJmYUdnM3JMVFJEcWV5RHl3OHROUnN0YUoyVUYrcTZMN0p0UnVjQ3pqekJ4b66666666666666666666888888888888888888888888vTUIwR0ExVWREZ1FXQkJRQS9jV3hTQ1AvV2plRklsd0l6MmF6eG4xem1UQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQjh2dW1aWDNGVQp2L3RmcDBTZG5pK0g1RG9FWGRNb2dtZ1NLTHhIK2pCd0dZazJVVnNJUS9yUE5Ja3Z4UGRSbnpSY0lkQ3RkNktZCjhJUVRDZVZDejVXM3AwM1RSVWtxcy8xUWxmOGkyL3ZuUXNaaTJRbmRzTkJKVDBhMllGWFQ4ZVBYeVV1MzJCR3YKVW44RkJvTkYwKzNBZzFpZldIOWhzYjhnZ3BsbVJ4S1FmOXpEaEJ5a0N5a0Z4d1NwdW9CWkYza3MzVUwzRUVpZQptZWZxK215YUVvNVlORXFUbFoyQ3FHV1lwS1RoNFRQVkZTYlh4eEZkYTJEYmxTcGR6Mmk0bysxNmlxNzlqa0tFCmtOcGdsWDQ0UG9aWkdNeFBuWTYrVlE5OG5YMFp4WWV4VmtBclJlMlJxV291QjlWbXhjWkFlS1pYVmk3bjJ5d20KcWVKVms4TFNtdFo3Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0Kserver: https://10.10.101.35:6443name: cluster.local
contexts:
- context:cluster: cluster.localuser: kubernetes-adminname: kubernetes-admin@cluster.local
current-context: kubernetes-admin@cluster.local
kind: Config
preferences: {}
users:
- name: kubernetes-adminuser:client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZ666666666666666666666666666666777777777777778888888888888888888R0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDeGRSYTYKcnhRUkpmY0xXYVNIZ3NKbzBnOGNYMFp0eERxeG1pL0t2U2J6UzdSV25iblBsUDV4aTlWRkdVcGZVbSt4MktnQgp5cVVhbXpPM3BUcm01SmJuTEdhN2VQVVdWYXdWSUh2V0puN3FHd2NwK2lyVTVaMGMzWjUvc3FXaEZoTnBxVHlkCktESjIwcDFyQy9yWGxPcDR1Ry9kQkhSQ3hWaloxQitWcEd1MjFwMWU4dGhNeE5uRkNwaGFUV3VaVkc4cGVWdkEKRlJTMUdoM3p6emJOTFU3L3lHVFZHelVpUFhKOTVYNSs3WW10SHFkc3dCYjZiQmJ1234567890BHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUIvYlZLWDIrTGE0NnF6czNlOTNXME1WYXBqClNlcmdiSjR3SXJvTlBwSW03QUp6dWREdjlQL0xYRm1xeUppS1QxQVhuWmpVZWhuanVrMFhSWWI4QldOT1VYdW8KbWc0RkdBUUFoMmpzVTVjSHFrVUNUaVBmTVJO6666666666666666666666666666666666666666666666666666666666666CZ0xQQlR2T3RiMWlQZThlOXlYdDFoNzVDCkRoM0Q5Q3M4UXlLOGoyRnk1QjZjVW5CWFdEL3YzdWpoQ3Jpc2o3YjVaNk1uNWFNeVJDY3FlOTIzc21wSWJkdmcKWWU3VWI5dUU5ZGs4REhzOE52UXFnZ0ZQRnNlYnFKSGZ1bEJ0eTY2bEtReXR0SWlpcEhab1ZqMytnSzkwCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0Kclient-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSB888888888888888888888888888Bc1hVV3VxOFVFU1gzQzFta2g0TENhTklQSEY5R2JjUTZzWm92eXIwbTgwdTBWcDI1Cno1VCtjWXZWUlJsS1gxSnZzZGlvQWNxbEdwc3p0NlU2NXVTVzV5eG11M2oxRmxXc0ZTQjcxaVorNmhzSEtmb3EKMU9XZEhOMmVmN0tsb1JZVGFhazhuU2d5ZHRLZGF3djYxNVRxZUxodjNRUjBRc1ZZMmRRZmxhUnJ1234567890Vc0eDAwODAzOE1KeG0wbVdIZ3VlSVJFcWRkNTFvMHNPTm0KQWUrcThhV1dGZjVONHFjdmFDN3pPTmlOdmIzYXVOVzQwMVRONWZ1QXBUMm15eElwVWFvYTV6MGlPTHAwNVhRMQpjUW53YjVSUHhKaXNBVFhhTEdPNm16UVRhRHd2SWpZWDFWRVpuTTlILzY0N2IyRG96dkR4T2VkREFvYU4zNmpNCkZEN1E2aWE3VmhCb0MzaVViT25GTGRkbGhndjZ4TktFbjhlVHdJTWpTSGw123456789000000000000000011111111111111111111111111111111111mh4VFNoa1FLQmdHNGJpcndOYTIrZXYxSVJKN0ZnVjkwdk9mVUVKLzNobk8zK2JTajkKMVAvQ2tIUGVqY2dhY2pCREdQVEg1VnFzb2hreFN3TGQ5WnFUYTZldFJKdDNWUzMwZ2h5YkVJVUlkNzBqSlhScwpBUFc2anpWZ3U1czE0cHh1b1ZhSzU3T1AxRFJWVitSRGlvZDM3MkJMZ01qeXRzTW1wYXR0OURzeUVEbEZRWG54CkhHM2hBb0dCQUlzWEhDVmNoL0ltNWI2SnlHaXlqMlN3T0pVaXIvU25wN0kwVm1rbDVFNFIxL1drQmExL0hSNUEKNlhIWFJBTDhuU2ExUXBpVGVWc010QjY1dnY1cFJTN1ZQWTVhUi9vM0Jnb1VUKzFpT1MxS2U0VllHdjBZWktFcwpyOTFlc0t4aFAwbWZDM1hXRGNLRnViYVk4ZUdOek9KM1dmT0dla1UzSHp2N21QZm5USzdHCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

啟動客戶端

開起ktctl.exe 服務

C:\Users\shuaige\Desktop\離線包\k8s>ktctl.exe connect
6:35PM INF Using cluster context kubernetes-admin@cluster.local (cluster.local)
6:35PM INF KtConnect 0.3.7 start at 144 (windows amd64)
6:35PM INF Fetching cluster time ...
6:35PM INF Fetching cluster time ...
6:35PM INF Fetching cluster time ...
6:35PM INF Fetching cluster time ...
6:35PM INF Fetching cluster time ...
6:35PM INF Fetching cluster time ...

這時k8s服務端會運行一個pod容器

]# kubectl get pods -o wide
NAME                             READY   STATUS             RESTARTS        AGE    IP             NODE                                      NOMINATED NODE   READINESS GATES
kt-rectifier-56666             0/1     ImagePullBackOff   0               69s    10.233.109.5   test-010010101027  <none>           <none>

拉取鏡像失敗,在pod中找到配置的鏡像地址,修改成私有倉庫地址,查看pod已經running運行了。

kubectl edit pod kt-rectifier-czhqm# 大概在27行的位置27     image: registry.cn-hangzhou.aliyuncs.com/rdc-incubator/kt-connect-shadow:v0.3.7# 修改成私有地址27     image: harbor.aliyun.com/repo/kt-connect-shadow:v0.3.7NAME                     READY   STATUS    RESTARTS   AGE
pod/kt-rectifier-6666   1/1     Running   0          11m

運行命令啟動工具

# 運行命令
ktctl connect -i harbor.aliyun.cn/repo/kt-connect-shadow:v0.3.7# 返回結果
6:54PM INF Using cluster context kubernetes-admin@cluster.local (cluster.local)
6:54PM INF KtConnect 0.3.7 start at 14048 (windows amd64)
6:54PM INF Fetching cluster time ...
6:54PM INF Using tun2socks mode
6:54PM INF Successful create config map kt-connect-shadow-froxd
6:54PM INF Deploying shadow pod kt-connect-shadow-froxd in namespace default
6:54PM INF Waiting for pod kt-connect-shadow-froxd ...
6:55PM INF Pod kt-connect-shadow-froxd is ready
6:55PM INF Port forward local:13003 -> pod kt-connect-shadow-froxd:22 established
6:55PM INF Socks proxy established
2025/06/05 18:55:04 Installing driver 0.14
2025/06/05 18:55:04 Extracting driver
2025/06/05 18:55:04 Installing driver
2025/06/05 18:55:05 Creating adapter
6:55PM INF Tun device KtConnectTunnel is ready
6:55PM INF Adding route to 10.233.0.0/16
6:55PM INF Adding route to 10.10.101.128/25
6:55PM INF Adding route to 10.10.101.64/26
6:55PM INF Adding route to 10.10.101.0/27
6:55PM INF Adding route to 10.10.101.48/28
6:55PM INF Adding route to 10.10.101.40/29
6:55PM INF Adding route to 10.10.101.36/30
6:55PM INF Adding route to 10.10.101.32/31
6:55PM INF Adding route to 10.10.101.34/32

查看現有集群的中的業務

 kubectl get pods -o wide# 查看返回
nginx-6474b87897-6666          1/1     Running   0               86m     10.233.109.4   test-010010101027-security-cm5   <none>           <none>

驗證是否連接集群成功

默認如果不用這個工具連接集群,集群內資源是無法訪問的,無法做到本地和集群內業務程序之間聯調測試 ,這個地址是 10.233.109.4 k8s內網的虛擬IP地址。

現在連接工具后,可以在本地電腦直接訪問到K8s內網的虛擬IP地址,等于和k8s網絡環境是一致的。

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

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

相關文章

RFID推動新能源汽車零部件生產系統管理應用案例

RFID推動新能源汽車零部件生產系統管理應用案例 一、項目背景 新能源汽車零部件場景 在新能源汽車零部件生產領域&#xff0c;電子冷卻水泵等關鍵部件的裝配溯源需求日益增長。傳統 RFID 溯源方案采用 “網關 RFID 讀寫頭” 模式&#xff0c;存在單點位單獨頭溯源、網關布線…

C#封裝HttpClient:HTTP請求處理最佳實踐

C#封裝HttpClient&#xff1a;HTTP請求處理最佳實踐 在現代的.NET應用程序開發中&#xff0c;與外部服務進行HTTP通信是一項常見需求。HttpClient作為.NET框架中處理HTTP請求的核心組件&#xff0c;為我們提供了強大而靈活的API。然而&#xff0c;直接使用原生的HttpClient可能…

【Redis/2】核心特性、應用場景與安裝配置

文章目錄 一、初識 Redis1.1 Redis 概述1. Redis 簡介2. Redis 的發展歷程 1.2 Redis 核心特性1. 高性能2. 豐富的數據類型3. 持久化4. 原子操作5. 主從復制6. 高可用性與分布式7. 內存存儲與低延遲8. 靈活的過期策略9. 事務支持10. 簡單的 API總結 1.3 Redis 應用場景Redis 適…

AI大模型在測試領域應用案例拆解:AI賦能的軟件測試效能躍遷的四大核心引擎(順豐科技)

導語 5月份QECon深圳大會已經結束&#xff0c;繼續更新一下案例拆解&#xff0c;本期是來自順豐科技。 文末附完整版材料獲取方式。 首先來看一下這個案例的核心內容&#xff0c;涵蓋了測四用例設計、CI/CD輔助、測試執行、監控預警四大方面&#xff0c;也是算大家比較熟悉的…

【HTML】HTML 與 CSS 基礎教程

作為 Java 工程師&#xff0c;掌握 HTML 和 CSS 也是需要的&#xff0c;它能讓你高效與前端團隊協作、調試頁面元素&#xff0c;甚至獨立完成簡單頁面開發。本文將用最簡潔的方式帶你掌握核心概念。 一、HTML&#xff0c;網頁骨架搭建 核心概念&#xff1a;HTML通過標簽定義內…

Redis 集群批量刪除key報錯 CROSSSLOT Keys in request don‘t hash to the same slot

Redis 集群報錯 CROSSSLOT Keys in request dont hash to the same slot 的原因及解決方案 1. 錯誤原因 在 Redis 集群模式下&#xff0c;數據根據 哈希槽&#xff08;Slot&#xff09; 分散存儲在不同的節點上&#xff08;默認 16384 個槽&#xff09;。當執行涉及多個 key …

.Net Framework 4/C# LINQ*

一、什么是 LINQ LINQ 是一種在 C# 等編程語言中集成的查詢功能&#xff0c;它允許開發者使用編程語言本身的語法進行數據查詢&#xff0c;而不是嵌入式的字符串 SQL 語句。LINQ 查詢可以應用于對象、XML 和數據庫等多種數據源。 二、LINQ 查詢的基本構成 LINQ 查詢通常包含以…

【docker】容器技術如何改變軟件開發與部署格局

在當今數字化時代&#xff0c;軟件開發與部署的效率和靈活性至關重要。就像古人云&#xff1a;“工欲善其事&#xff0c;必先利其器。”Docker 作為一款強大的容器技術&#xff0c;正如同軟件開發領域的一把利器&#xff0c;極大地改變了應用的開發、交付和運行方式。本文將深入…

MySQL的優化部分介紹

1、定期維護表&#xff1a; ANALYZE TABLE t_order_package; OPTIMIZE TABLE t_order_package; -- 每月在低峰期執行 2、數據歸檔&#xff08;如果create_time較舊&#xff09;&#xff1a; -- 歸檔舊數據到歷史表 INSERT INTO t_order_package_archive SELECT * FROM t_or…

Go基本語法——go語言中的四種變量定義方法

前言 在go語言中&#xff0c;定義一個變量有四種方式&#xff0c;本文單從語法的層面來介紹這幾種方式 單變量定義方法 1.var 變量名 類型&#xff0c;不進行初始化 例如&#xff0c;定義一個變量a后為其賦值&#xff0c;并且打印其值&#xff0c;運行結果如下 //1.不進行…

C++ 對 C 的兼容性

C 對 C 語言的兼容性是有限且有條件的&#xff0c;并非完全無縫兼容。這種兼容性主要體現在語法、標準庫和運行時特性上&#xff0c;但存在一些關鍵差異和不兼容點。以下是詳細分析&#xff1a; 一、C 對 C 的兼容性表現 1. 語法兼容&#xff1a;大部分 C 代碼可直接編譯 基…

ES6 核心語法手冊

ES6 核心語法手冊 一、變量聲明 關鍵字作用域是否可重定義是否可修改特性let塊級作用域??替代 var 的首選const塊級作用域??聲明常量&#xff08;對象屬性可修改&#xff09; // 示例 let name "Alice"; name "Bob"; // ?const PI 3.14; // PI …

react菜單,動態綁定點擊事件,菜單分離出去單獨的js文件,Ant框架

1、菜單文件treeTop.js // 頂部菜單 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定義菜單項數據 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 權限管理,key: 2,icon:…

gRPC協議

目錄 1. gRPC協議介紹及構成 協議分層 協議關鍵字段 2. 示例&#xff1a;Greeter 服務 步驟1&#xff1a;定義 .proto 文件 步驟2&#xff1a;生成代碼 3. Java代碼示例 依賴配置&#xff08;Maven pom.xml&#xff09; 服務端實現 客戶端實現 運行流程 關鍵機制 …

深度學習 w b

在深度學習中&#xff0c;權重 w 和 偏置 b 是神經網絡的核心參數&#xff0c;它們的形態&#xff08;shape&#xff09;取決于網絡結構和數據維度。以下是關于 w 和 b 的詳細解析&#xff1a; 1. 數學表示與物理意義 權重 w&#xff1a; 連接神經元之間的強度&#xff0c;決定…

el-table 樹形數據,子行數據可以異步加載

1、 <el-tableborder:header-cell-style"tableStyle?.headerCellStyle"ref"tableRef":data"tableData"row-key"id":default-expand-all"false" // 默認不展開所有樹形節點:tree-props"{ children: children, hasC…

Vue中渲染函數的使用

Vue中渲染函數的使用 1. render函數2. h()的使用3. render函數和h函數的區分 vue中的渲染函數&#xff1a; 1.template2.render函數3.jsx -> js extension(jsx也是編譯成render函數&#xff0c;可編程能力更強) 1. render函數 1.1. 認識h函數 1.1.1. Vue推薦在絕大多數情況…

【氮化鎵】GaN HMETs器件物理失效分析進展

2021 年 5 月,南京大學的蔡曉龍等人在《Journal of Semiconductors》期刊發表了題為《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多種物理表征技術及大量研究成果,對 GaN HEMTs 的常見失效機制進行了系統分析。文中先介紹失效分析流程,包括使…

每日Prompt:治愈動漫插畫

提示詞 現代都市治愈動漫插畫風格&#xff0c;現代女子&#xff0c;漂亮&#xff0c;長直發&#xff0c;20歲&#xff0c;豆沙唇&#xff0c;白皙&#xff0c;氣質&#xff0c;清純現代都市背景下&#xff0c;夕陽西下&#xff0c;一位穿著白色露臍短袖&#xff0c;粉色工裝褲…

2025年牛客網秋招/社招高質量 Java 面試八股文整理

Java 面試 不論是校招還是社招都避免不了各種面試。筆試&#xff0c;如何去準備這些東西就顯得格外重要。不論是筆試還是面試都是有章可循的。關鍵在于理解企業的需求&#xff0c;明確自己的定位&#xff0c;以及掌握一定的應試技巧。 筆試部分&#xff0c;通常是對基礎知識、…