K8S集群主機網絡端口不通問題排查

一、環境

k8s: ? v1.23.6

docker: ?????????20.10.14

問題和故障現象:devops主機集群主機節點到端口8082不通(網絡策略已經申請,并且網絡策略已經實施完畢),而且網絡實施人員再次確認,網絡策略配置沒有問題,端口卻依然不通。

解決簡介

  1. 通過traceroute定位
  2. 通過route -n 查看路由表信息
  3. 查看VIP 子網掩碼位數
  4. 修改宿主機上的keepalived配置文件
  5. 進入k8s-keepalive容器內部,修改keepalive配置文件
  6. 重啟容器k8s-keepalive

二、問題排查

2.1、檢查端口不通

檢查xxx.xxx.25.226 ?到目標主機xxx.xxx..60.142 8082 端口不通,也不能ping通。

K8s 集群信息如下:

通過在目標主機上?tcpdump抓包:

tcpdump -i any -nn host xxx.xxx.25.226

也沒有抓到源主機 xxx.xxx.25.226的請求數據包

2.2 、網絡策略策略實施人員確認

網絡策略已經提交工單,并且網絡人員已經實施完畢,再次和網絡策略實施人員確認,他那邊網絡策略實施的沒有問題。

2.3、通過traceroute 定位分析

感覺有點怪異,沒有走網關 xxx.xxx.25.1

2.4、 通過rourt -n 查看本地路由表信息

通過路由表分析,到目標?xxx.xxx.60.142 8082 匹配上了路由表的第二條路由規則,沒有經過網關 xxx.xxx.25.1

2.5、 通過ip a 查看

上面紅色的IP xxx.xxx.25.226/24是宿主機的地址,下面綠色IP xxx.xxx.25.232/16的是k8s apiserver 高可用使用的VIP ,查看感覺這里的子網掩碼16有點特別奇怪,因為這個地址的存在,所以,路由表里面就有了上面的第二條路由規則的添加:

我們從本機到目標地址?xxx.xxx.60.142 8082 的 數據包就匹配上了這條規則,從本機直連,而不通過網關 xxx.xxx.25.1了,但因為我們本地xxx.xxx.25.226/24所在的網絡xxx.xxx.25.0/24 顯然和我們要訪問的目標主機xxx.xxx.60.142/24 所在的網絡xxx.xxx.60.0/24 不是同一網絡,必須要通過網關xxx.xxx.25.1才行,問題就在這里。

三、問題解決

3.1、 找到?xxx.xxx.25.232/16配置的應用

查看VIP ?xxx.xxx.60.142/16 是keepalived容器在使用,這個是apiserver 的高可用配置的VIP,通過3個節點上運行的k8s-keepalive容器實現。

查看容器映射到宿主機的配置信息:

[root@XX-XXpod2-c6-core-25-226 .kube]# cat ?/apps/k8s-ha/kconf/keepalived.conf

! Configuration File for keepalived

global_defs {

???router_id LVS_1

}

vrrp_script checkhaproxy

{

????script "/opt/check.sh"

????interval 1

????weight -30

}

vrrp_instance VI_1 {

????state MASTER

????interface eth0

????virtual_router_id 232

????priority 100

????unicast_src_ip xxx.xxx.25.226

????unicast_peer {

????????????????????????????????????????xxx.xxx.25.227

????????????????????????????????xxx.xxx.25.228

????????????????????}

????advert_int 1

????authentication {

????????auth_type PASS

????????auth_pass "!q12Q!waER43aS"

????}

????virtual_ipaddress {

????????xxx.xxx.25.232/16

????}

????track_script

????{

????????checkhaproxy

????}

}

通過查看,發現上面的VIP的子網掩碼寫成了16位了。

先備份3個master節點上的配置文件,把配置文件里面的VIP子網掩碼修改為24位。3個節點依次重啟k8s-keepaive容器后,通過ip a |grep xxx.xxx 查看,VIP子網掩碼依然為為16位.

3.2、?進一步進入到k8s-keepalive容器里面排查定位

在容器里面執行 ps -ef 命令 看下查看到 里面運行的keepalived進程用到的配置文件為:

/usr/local/etc/keepalived/keepalived.conf

查看容器里面的配置文件內容,查看配置文件里面VIP子網掩碼修改依然為16位,

bash-5.0# vi /usr/local/etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

???router_id LVS_1

}

vrrp_script checkhaproxy

{

????script "/opt/check.sh"

????interval 1

????weight -30

}

vrrp_instance VI_1 {

????state MASTER

????interface eth0

????virtual_router_id 232

????priority 100

????unicast_src_ip xxx.xxx.25.226

????unicast_peer {

????????????????????????????????????????xxx.xxx.25.227

????????????????????????????????xxx.xxx.25.228

????????????????????}

????advert_int 1

????authentication {

????????auth_type PASS

????????auth_pass "!q12Q!waER43aS"

????}

????virtual_ipaddress {

????????xxx.xxx.25.232/16

????}

????track_script

????{

????????checkhaproxy

????}

}

看來,修改映射到宿主機的配置文件后,沒有用,還需要修改容器里面的配置文件。

3.3 修改容器里面的配置文件后,重啟容器

修改完容器里面的配置文件后,重啟容器,再次在宿主機上通過 ip a |grep ?xxx.xxx

查看 VIP子網掩碼為24位了。

路由表也恢復正常了。?

.總結

4.1 遇到類似問題,要學會使用常用命令工具分析,一步一步排查。

4.2 Keepalived容器在使用的時候,修改宿主機配置文件后,還要修改容器里面的配置文件。

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

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

相關文章

qemu安裝risc-V 64

參考這篇文章https://developer.aliyun.com/article/1323996,其中在wsl下面安裝可能會報錯環境變量中有空格。 # clean_path.sh#!/bin/bash# 備份舊 PATH OLD_PATH"$PATH"# 過濾掉包含空格、制表符、換行的路徑 CLEAN_PATH"" IFS: read -ra PA…

python爬蟲:RoboBrowser 的詳細使用

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 一、RoboBrowser概述1.1 RoboBrowser 介紹1.2 安裝 RoboBrowser1.3 與類似工具比較二、基本用法2.1 創建瀏覽器對象并訪問網頁2.2 查找元素2.3 填寫和提交表單三、高級功能3.1 處理文件上傳3.2 處理JavaScript重定向3.3…

CTFSHOW-WEB-36D杯

給你shell 這道題對我這個新手還是有難度的&#xff0c;花了不少時間。首先f12看源碼&#xff0c;看到?view_source&#xff0c;點進去看源碼 <?php //Its no need to use scanner. Of course if you want, but u will find nothing. error_reporting(0); include "…

CentOS_7.9 2U物理服務器上部署系統簡易操作步驟

近期單位網站革新&#xff0c;鑒于安全加固&#xff0c;計劃將原有Windows環境更新到Linux-CentOS 7.9&#xff0c;這版本也沒的說&#xff08;絕&#xff09;了&#xff08;版&#xff09;官方停止更新&#xff0c;但無論如何還是被sisi的牽掛著這一大批人&#xff0c;畢竟從接…

LVS-DR高可用-Keepalived

目錄 Keepalved雙機熱備 核心概念 關鍵組件 工作流程 實例環境 配置keepalived Web服務器配置 Keepalved雙機熱備 Keepalived雙機熱備是一種基于VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虛擬路由冗余協議&#xff09;實現的高可用性解決方案&am…

Polar編譯碼(SCL譯碼)和LDPC編譯碼(BP譯碼)的matlab性能仿真,并對比香農限

目錄 1.算法仿真效果 2.算法涉及理論知識概要 2.1香農極限 2.2 Polar碼編譯碼原理與SCL譯碼 2.3 LDPC碼編譯碼原理與BP譯碼 3.MATLAB核心程序 4.完整算法代碼文件獲得 1.算法仿真效果 matlab2024b仿真結果如下&#xff08;完整代碼運行后無水印&#xff09;&#xff1a…

AI 產品的 MVP 構建邏輯:Prompt 工程 ≠ 產品工程?(實戰增補篇)

一. 系統思維&#xff1a;產品工程的全局把控&#xff08;實戰增補篇&#xff09; 1. 某智能風控系統的彈性架構實踐 某消費金融公司在開發「30 秒極速貸」產品時&#xff0c;面臨兩大挑戰&#xff1a; Prompt 優化困境&#xff1a;傳統風控模型依賴 “提取用戶信用報告關鍵…

Unity程序集

對于Unity的程序集&#xff0c;具體內容可以參考Unity官方文檔&#xff0c;程序集定義 - 預定義程序集 比如Unity的默認程序集&#xff0c;Assembly-CSharp.dll&#xff0c;還有其他的比如 Assembly-CSharp-Editor.dll&#xff0c;Assembly-CSharp-firstpass.dll 沒有指定或…

【架構藝術】平衡技術架構設計和預期的產品形態

近期筆者因為工作原因&#xff0c;開始啟動team內部部分技術項目的重構。在事情啟動的過程中&#xff0c;內部對于這件事情的定性和投入有一些爭論&#xff0c;但最終還是敲定了下來。其中部分爭論點主要在于產品形態&#xff0c;因為事情涉及到跨部門合作&#xff0c;所以產品…

React和原生事件的區別

一、核心差異對比表 維度原生事件React 事件綁定語法HTML 屬性&#xff08;onclick&#xff09;或 DOM API&#xff08;addEventListener&#xff09;JSX 中使用駝峰式屬性&#xff08;onClick&#xff09;綁定位置直接綁定到具體 DOM 元素統一委托到根節點&#xff08;React …

大模型-modelscope下載和使用chatglm3-6b模型

前言 由于官方chatglm3-6b大模型文件下載比較慢&#xff0c;找到國內modelscope代替方案 1.SDK下載 pip install modelscope2.下載大模型文件 ?方法1:通過pip下載 1.安裝 setuptools 在當前使用的 Python 環境中安裝 setuptools pip install setuptools2.通過如下命令安…

【unity游戲開發——編輯器擴展】AssetDatabase公共類在編輯器環境中管理和操作項目中的資源

注意&#xff1a;考慮到編輯器擴展的內容比較多&#xff0c;我將編輯器擴展的內容分開&#xff0c;并全部整合放在【unity游戲開發——編輯器擴展】專欄里&#xff0c;感興趣的小伙伴可以前往逐一查看學習。 文章目錄 前言一、AssetDatabase常用API1、創建資源1.1 API1.2 示例 …

css實現文字漸變

在前端開發中&#xff0c;給文字設置漸變色是完全可以實現的&#xff0c;常用的方式是結合 CSS 的 background、-webkit-background-clip 和 -webkit-text-fill-color 屬性。下面是一個常見的實現方法&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> …

WSL 開發環境搭建指南:Java 11 + 中間件全家桶安裝實戰

在WSL&#xff08;Windows Subsystem for Linux&#xff09;環境下一站式安裝開發常用工具&#xff0c;能極大提升工作效率。接下來我將分步為你介紹如何在WSL中安裝Java 11、Maven、Redis、MySQL、Nacos、RabbitMQ、RocketMQ、Elasticsearch&#xff08;ES&#xff09;和Node.…

vue3: baidusubway using typescript

項目結構&#xff1a; <!--npm install -D tailwindcss-3d BaiduSubwayMap.vue npm install -D tailwindcss postcss autoprefixer--> <template><div class"relative w-full h-screen"><!-- 地圖容器 --><div id"subway-container…

【iptables防火墻】-- URL過濾 (Hexstring、IP、DoT和DoH)

在路由器中使用iptables工具對URL地址進行過濾涉及到如下幾個方面&#xff0c;hexstring、ip、DoT和DoH。 以過濾www.baidu.com為例 1、DNS阻斷 m string --hex-string是iptables中一個以?十六進制格式?定義要匹配的二進制特征并且支持混合明文和二進制數據的模塊。由于DN…

mysql-本地編譯 MySQL 源碼

完全理解你的感受&#xff01;MySQL 源碼本地調試確實是一個“坑多”的過程&#xff0c;尤其是當你第一次嘗試從源碼構建和調試 MySQL 時。但別擔心&#xff0c;我來一步步幫你梳理整個流程&#xff0c;并提供一個詳細、可操作的指南&#xff0c;讓你可以順利跑起來 MySQL 源碼…

深入理解 shared_ptr 與 enable_shared_from_this

在 C++ 的智能指針體系中,std::shared_ptr 是一個非常重要的工具,它通過引用計數機制幫助我們管理動態分配的對象生命周期,避免內存泄漏。然而,在某些情況下,我們可能需要從一個對象內部獲取指向自身的 shared_ptr,這時候就需要使用 std::enable_shared_from_this 這個輔…

通義開源視覺感知多模態 RAG 推理框架 VRAG-RL:開啟多模態推理新時代

通義實驗室的自然語言智能團隊&#xff0c;憑借深厚的技術積累與創新精神&#xff0c;成功研發并開源了視覺感知多模態 RAG 推理框架 VRAG-RL&#xff0c;為 AI 在復雜視覺信息處理領域帶來了重大突破。 傳統 RAG 方法的局限 傳統的檢索增強型生成&#xff08;RAG&#xff0…

【iOS】方法交換

方法交換 method-swizzling是什么相關API方法交換的風險method-swizzling使用過程中的一次性問題在當前類中進行方法交換類方法的方法交換 方法交換的應用 method-swizzling是什么 method-swizzling的含義是方法交換&#xff0c;他的主要作用是在運行的時候將一個方法的實現替…