高可用集群故障之join

本文记录了在部署高可用的k8s集群时,遇到的一个故障及其解决方法。

集群环境

描述:三主三从,eth0为外网网卡,eth1为内网网卡,内网互通。

需求:eth0只负责访问外网,eth1作为集群间的通信。

主机名网卡,IP内存CPU
controller1

eth0: 10.45.25.11/24

eth1: 10.9.7.11/24

84,开启虚拟化
controller2

eth0: 10.45.25.12/24

eth1: 10.9.7.12/24

84,开启虚拟化
controller3

eth0: 10.45.25.13/24

eth1: 10.9.7.13/24

84,开启虚拟化
node1

eth0: 10.45.25.14/24

eth1: 10.9.7.14/24

84,开启虚拟化
node2

eth0: 10.45.25.15/24

eth1: 10.9.7.15/24

84,开启虚拟化
node3

eth0: 10.45.25.16/24

eth1: 10.9.7.16/24

84,开启虚拟化
controller VIP10.9.7.100//

问题描述

在加入node节点后,calico组件就绪失败。

失败原因如下图。

看报错是没有到10.96.0.1的路由,导致流量过不去。

处理过程

懵懂排错

  1. 在集群中,10.96.0.1状态正常。

  2. 换calico版本后,无果
  3. 换k8s版本重新部署后,无果

初见端倪

就在手足无措抓头时,我查看了一下集群负载信息。

突然意识到在加入主节点时就出现了问题,然后尝试了很多办法去指定初始化时的IP地址。很神奇的是不管什么方法都不生效。

解决方法

就在我即将放弃之际,我想到了去官网溜达溜达,无意间发现了救命稻草--apiserver-advertise-addres

在join时使用此选项指定IP即可,问题轻松解决。

kubeadm init流程

kubeadm init | Kubernetes

kubeadm init 命令通过执行下列步骤来启动一个 Kubernetes 控制平面节点。

  1. 在做出变更前运行一系列的预检项来验证系统状态。一些检查项目仅仅触发警告, 其它的则会被视为错误并且退出 kubeadm,除非问题得到解决或者用户指定了 --ignore-preflight-errors=<错误列表> 参数。

  2. 生成一个自签名的 CA 证书来为集群中的每一个组件建立身份标识。 用户可以通过将其放入 --cert-dir 配置的证书目录中(默认为 /etc/kubernetes/pki) 来提供他们自己的 CA 证书以及/或者密钥。 API 服务器证书将为所有 --apiserver-cert-extra-sans 参数值提供附加的 SAN 条目,必要时将其小写。

  3. 将 kubeconfig 文件写入 /etc/kubernetes/ 目录以便 kubelet、控制器管理器和调度器连接到 API 服务器,它们每一个都有自己的身份标识。再编写额外的 kubeconfig 文件,将 kubeadm 作为管理实体(admin.conf)和可以绕过 RBAC 的超级管理员用户(super-admin.conf)。

  4. 为 API 服务器、控制器管理器和调度器生成静态 Pod 的清单文件。假使没有提供一个外部的 etcd 服务的话,也会为 etcd 生成一份额外的静态 Pod 清单文件。

    静态 Pod 的清单文件被写入到 /etc/kubernetes/manifests 目录; kubelet 会监视这个目录以便在系统启动的时候创建 Pod。

    一旦控制平面的 Pod 都运行起来,kubeadm init 的工作流程就继续往下执行。

  5. 对控制平面节点应用标签和污点标记以便不会在它上面运行其它的工作负载。

  6. 生成令牌,将来其他节点可使用该令牌向控制平面注册自己。如 kubeadm token 文档所述,用户可以选择通过 --token 提供令牌。

  7. 为了使得节点能够遵照启动引导令牌和 TLS 启动引导 这两份文档中描述的机制加入到集群中,kubeadm 会执行所有的必要配置:

    • 创建一个 ConfigMap 提供添加集群节点所需的信息,并为该 ConfigMap 设置相关的 RBAC 访问规则。

    • 允许启动引导令牌访问 CSR 签名 API。

    • 配置自动签发新的 CSR 请求。

    更多相关信息,请查看 kubeadm join。

  8. 通过 API 服务器安装一个 DNS 服务器 (CoreDNS) 和 kube-proxy 附加组件。 在 Kubernetes v1.11 和更高版本中,CoreDNS 是默认的 DNS 服务器。 请注意,尽管已部署 DNS 服务器,但直到安装 CNI 时才调度它。

kubeadm join流程

kubeadm join | Kubernetes

kubeadm join 初始化 Kubernetes 工作节点或控制平面节点并将其添加到集群中。 对于工作节点,该操作包括以下步骤:

  1. kubeadm 从 API 服务器下载必要的集群信息。 默认情况下,它使用引导令牌和 CA 密钥哈希来验证数据的真实性。 也可以通过文件或 URL 直接发现根 CA。

  2. 一旦知道集群信息,kubelet 就可以开始 TLS 引导过程。
    TLS 引导程序使用共享令牌与 Kubernetes API 服务器进行临时的身份验证,以提交证书签名请求 (CSR); 默认情况下,控制平面自动对该 CSR 请求进行签名。

  3. 最后,kubeadm 配置本地 kubelet 使用分配给节点的确定标识连接到 API 服务器。

对于控制平面节点,执行额外的步骤:

  1. 从集群下载控制平面节点之间共享的证书(如果用户明确要求)。

  2. 生成控制平面组件清单、证书和 kubeconfig。

  3. 添加新的本地 etcd 成员。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/893873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现

本文主要介绍如何基于FPGA实现视频的任意角度旋转&#xff0c;关于视频180度实时旋转、90/270度视频无裁剪旋转&#xff0c;请见本专栏前面的文章&#xff0c;旋转效果示意图如下&#xff1a; 为了实时对比旋转效果&#xff0c;采用分屏显示进行处理&#xff0c;左边代表旋转…

RocketMQ原理—5.高可用+高并发+高性能架构

大纲 1.RocketMQ的整体架构与运行流程 2.基于NameServer管理Broker集群的架构 3.Broker集群的主从复制架构 4.基于Topic和Queue实现的数据分片架构 5.Broker基于Pull模式的主从复制原理 6.Broker层面到底如何做到数据0丢失 7.数据0丢失与写入高并发的取舍 8.RocketMQ读…

一文简单回顾Java中的String、StringBuilder、StringBuffer

简单说下String、StringBuilder、StringBuffer的区别 String、StringBuffer、StringBuilder在Java中都是用于处理字符串的&#xff0c;它们之间的区别是String是不可变的&#xff0c;平常开发用的最多&#xff0c;当遇到大量字符串连接的时候&#xff0c;就用StringBuilder&am…

Go:基于Go实现一个压测工具

文章目录 写在前面整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理 客户端模块Http客户端处理Grpc客户端处理Websocket客户端处理 连接处理模块GrpcHttp 统计数据模块统计原理实现过程 写在前面 本篇主要是基于Go来实现一个压测的工具&#xff0c;关于压测的内…

Redis --- 分布式锁的使用

我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法&#xff0c;但是这样不能让锁跨JVM也就是跨进程去使用&#xff0c;只能适用在单体项目中如下图&#xff1a; 为了解决这种场景&#xff0c;我们就需要用一个锁监视器对全部集群进行监视…

小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度

北京小盒科技有限公司&#xff08;简称“小盒科技”&#xff0c;由“作业盒子”更名而来&#xff09;是一家专注于教育科技的公司&#xff0c;致力于利用人工智能、大数据等先进技术&#xff0c;为中小学教育提供创新的解决方案和产品。 近日&#xff0c;「小盒科技」携手体…

PhotoShop中JSX编辑器安装

1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接&#xff1a; CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装&#xff0c;根据弹出的…

ESP32-CAM实验集(WebServer)

WebServer 效果图 已连接 web端 platformio.ini ; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library stor…

强化学习数学原理(三)——值迭代

一、值迭代过程 上面是贝尔曼最优公式&#xff0c;之前我们说过&#xff0c;f(v)v&#xff0c;贝尔曼公式是满足contraction mapping theorem的&#xff0c;能够求解除它最优的策略和最优的state value&#xff0c;我们需要通过一个最优v*&#xff0c;这个v*来计算状态pi*&…

03:Heap代码的分析

Heap代码的分析 1、内存对齐2、Heap_1.c文件代码分析3、Heap_2.c文件代码分析4、Heap_4.c文件代码分析5、Heap_5.c文件代码分析 1、内存对齐 内存对齐的作用是为了CPU更快的读取数据。对齐存储与不对齐存储的情况如下&#xff1a; 计算机读取内存中的数据时是一组一组的读取的…

three.js+WebGL踩坑经验合集(5.2):THREE.Mesh和THREE.Line2在镜像处理上的区别

本文紧接上篇&#xff1a; (5.1):THREE.Line2又一坑&#xff1a;镜像后不见了 本文将解答上篇提到的3个问题&#xff0c;首先回答第二个问题&#xff0c;如何获取全局的缩放值。 scaleWorld这个玩意儿呢&#xff0c;three.js官方就没提供了。应该说&#xff0c;一般的渲染引…

jQuery的系统性总结

前言 jQuery是一个快速、小型且功能丰富的 JavaScript 库&#xff08;实际上就是一堆JS代码&#xff09;。其目的在于&#xff1a;write less do more。 优点&#xff1a; 写得少做得多&#xff1b;兼容性&#xff1b;体积小&#xff1b;链式编程&#xff1b;隐式迭代、插件丰…

【背包问题】完全背包

目录 前言&#xff1a; 一&#xff0c;完全背包问题 问题描述&#xff1a; 模板题目&#xff1a; 题目解析&#xff1a; 代码&#xff1a; 空间优化&#xff1a; 二&#xff0c;典例 1&#xff0c;零钱兑换 题目解析&#xff1a; 算法分析&#xff1a; 代码&#xff…

【Python实现机器遗忘算法】复现2023年TNNLS期刊算法UNSIR

【Python实现机器遗忘算法】复现2023年TNNLS期刊算法UNSIR 1 算法原理 Tarun A K, Chundawat V S, Mandal M, et al. Fast yet effective machine unlearning[J]. IEEE Transactions on Neural Networks and Learning Systems, 2023. 本文提出了一种名为 UNSIR&#xff08;Un…

知识管理平台在企业信息化建设中的应用价值与未来展望

内容概要 在当今信息化时代&#xff0c;企业面临着海量信息的挑战&#xff0c;知识管理平台因此应运而生&#xff0c;成为企业提升管理效率和决策能力的关键工具。知识管理平台不仅仅是一个信息存储的工具&#xff0c;它集成了信息共享、协作与创新、决策支持等多项功能。通过…

MiniHack:为强化学习研究提供丰富而复杂的环境

人工智能咨询培训老师叶梓 转载标明出处 想要掌握如何将大模型的力量发挥到极致吗&#xff1f;叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具&#xff08;限时免费&#xff09;。 1小时实战课程&#xff0c;您将学习到如何轻松上手并有效利用 Llama Facto…

从AD的原理图自动提取引脚网络的小工具

这里跟大家分享一个我自己写的小软件&#xff0c;实现从AD的原理图里自动找出网络名称和引脚的对应。存成文本方便后续做表格或是使用简单行列编辑生成引脚约束文件&#xff08;如.XDC .UCF .TCL等&#xff09;。 我们在FPGA设计中需要引脚锁定文件&#xff0c;就是指示TOP层…

MySQL分表自动化创建的实现方案(存储过程、事件调度器)

《MySQL 新年度自动分表创建项目方案》 一、项目目的 在数据库应用场景中&#xff0c;随着数据量的不断增长&#xff0c;单表存储数据可能会面临性能瓶颈&#xff0c;例如查询、插入、更新等操作的效率会逐渐降低。分表是一种有效的优化策略&#xff0c;它将数据分散存储在多…

HTML5使用favicon.ico图标

目录 1. 使用favicon.ico图标 1. 使用favicon.ico图标 favicon.ico一般用于作为网站标志&#xff0c;它显示在浏览器的地址栏或者标签上 制作favicon图标 选择一个png转ico的在线网站&#xff0c;这里以https://www.bitbug.net/为例。上传图片&#xff0c;目标尺寸选择48x48&a…

【C++动态规划 网格】2328. 网格图中递增路径的数目|2001

本文涉及知识点 C动态规划 LeetCode2328. 网格图中递增路径的数目 给你一个 m x n 的整数网格图 grid &#xff0c;你可以从一个格子移动到 4 个方向相邻的任意一个格子。 请你返回在网格图中从 任意 格子出发&#xff0c;达到 任意 格子&#xff0c;且路径中的数字是 严格递…