Kubernetes v1.25 源码编译

news2024/12/23 12:38:05

下载源码并切换到需要debug的分支

git clone git@github.com:kubernetes/kubernetes.git
git checkout -b v1.25 remotes/origin/release-1.25
cd kubernetes

编译源码

  • 执行:make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1会编译所有的组件

    • 网上参考了很多文章都是,需要修改hack/lib/golang.sh,实际上加上DBG=1这个参数,并不需要。Makefile开头就已经说明
    • 编译出来的二进制文件保存在:_output/local/bin目录下
      • 	[root@k8s-master1 kubernetes]# make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1
        	+++ [1205 14:29:27] Verifying Prerequisites....
        	Makefile.generated_files:61: .make/go-pkgdeps.mk: No such file or directory
        	+++ [1205 14:29:30] Building go targets for linux/amd64
        	    k8s.io/kubernetes/hack/make-rules/helpers/go2make (non-static)
        	+++ [1205 14:29:45] Building go targets for linux/amd64
        	    k8s.io/code-generator/cmd/prerelease-lifecycle-gen (non-static)
        	+++ [1205 14:29:51] Generating prerelease lifecycle code for 27 targets
        	+++ [1205 14:29:55] Building go targets for linux/amd64
        	    k8s.io/code-generator/cmd/deepcopy-gen (non-static)
        	+++ [1205 14:29:57] Generating deepcopy code for 242 targets
        	+++ [1205 14:30:12] Building go targets for linux/amd64
        	    k8s.io/code-generator/cmd/defaulter-gen (non-static)
        	+++ [1205 14:30:14] Generating defaulter code for 95 targets
        	+++ [1205 14:30:34] Building go targets for linux/amd64
        	    k8s.io/code-generator/cmd/conversion-gen (non-static)
        	+++ [1205 14:30:35] Generating conversion code for 132 targets
        	+++ [1205 14:31:12] Building go targets for linux/amd64
        	    k8s.io/kube-openapi/cmd/openapi-gen (non-static)
        	+++ [1205 14:31:29] Generating openapi code for KUBE
        	+++ [1205 14:32:27] Generating openapi code for AGGREGATOR
        	+++ [1205 14:32:30] Generating openapi code for APIEXTENSIONS
        	+++ [1205 14:32:33] Generating openapi code for CODEGEN
        	+++ [1205 14:32:36] Generating openapi code for SAMPLEAPISERVER
        	+++ [1205 14:32:40] Building go targets for linux/amd64
        	    k8s.io/kubernetes/cmd/kube-proxy (static)
        	    k8s.io/kubernetes/cmd/kube-apiserver (static)
        	    k8s.io/kubernetes/cmd/kube-controller-manager (static)
        	    k8s.io/kubernetes/cmd/kubelet (non-static)
        	    k8s.io/kubernetes/cmd/kubeadm (static)
        	    k8s.io/kubernetes/cmd/kube-scheduler (static)
        	    k8s.io/component-base/logs/kube-log-runner (static)
        	    k8s.io/kube-aggregator (non-static)
        	    k8s.io/apiextensions-apiserver (non-static)
        	    k8s.io/kubernetes/cluster/gce/gci/mounter (non-static)
        	    k8s.io/kubernetes/cmd/kubectl (static)
        	    k8s.io/kubernetes/cmd/kubectl-convert (non-static)
        	    k8s.io/kubernetes/cmd/gendocs (non-static)
        	    k8s.io/kubernetes/cmd/genkubedocs (non-static)
        	    k8s.io/kubernetes/cmd/genman (non-static)
        	    k8s.io/kubernetes/cmd/genyaml (non-static)
        	    k8s.io/kubernetes/cmd/genswaggertypedocs (non-static)
        	    k8s.io/kubernetes/cmd/linkcheck (non-static)
        	    github.com/onsi/ginkgo/v2/ginkgo (non-static)
        	    k8s.io/kubernetes/test/e2e/e2e.test (test)
        	    k8s.io/kubernetes/test/conformance/image/go-runner (non-static)
        	    k8s.io/kubernetes/cmd/kubemark (static)
        	    github.com/onsi/ginkgo/v2/ginkgo (non-static)
        	    k8s.io/kubernetes/test/e2e_node/e2e_node.test (test)
        
    • 验证编译出来的二进制文件可以使用以下两种命令验证是否能够debug
      • 1、objdump --syms _output/bin/kubelet
        • xsss
        • 在这里插入图片描述
      • 2、file _output/bin/kubelet
        • 在这里插入图片描述
      • 3、dlv exec _output/bin/kubelet
        • 在这里插入图片描述
    • 如果需要编译特定组件,那么需要执行make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make WHAT=cmd/<component>,以下是几个重要组件的单独编译命令
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kube-apiserver
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kube-controller-manager
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kube-proxy
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kube-scheduler
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kubeadm
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kubectl
      • make clean && KUBE_BUILD_PLATFORMS=linux/amd64 make all DBG=1 WHAT=cmd/kubelet
    • 本地运行K8S,执行./heak/local-up-cluster.up
  • delve启动代码

    • dlv --listen=:12345 --headless=true --api-version=2 --accept-multiclient exec /usr/local/bin/kubelet -- <kubelet的启动参数>
  • IDEA连接,开始debug

    • 在这里插入图片描述

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

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

相关文章

java 之泛型详解

1 什么是泛型 引入&#xff1a; 关于泛型&#xff0c;先来说几句集合。都知道集合是可以存储任意对象&#xff0c;当我们创建一个集合时如果没有声明它的存储类型&#xff0c;那该集合便自动提升为Object类型 提示&#xff1a;在我们创建对象的时候&#xff0c;如果没有明确指…

构建全真互联数字地图底座 腾讯地图产业版WeMap重磅升级

前言 &#xff1a;伴随着地理信息产业的不断演进&#xff0c;以及LBS、大数据、5G、云、AI等新技术的持续应用&#xff0c;数实融合发展呈现出加速态势&#xff0c;数字地图也从移动互联网时代向产业互联网时代进化。 WeMap腾讯地图产业版重磅升级&#xff01;12月1日&#xff…

AD入门学习—元件库的创建2

目录 1.3 IC芯片类元件创建 1.4 晶体类元件创建 1.5 接插件座子元件创建 学习目录 1.3 IC芯片类元件创建 填写ID放置在原理图上才会有名字。 STM32F103VET6芯片&#xff1a; 主要用到的还是阵列式粘贴&#xff0c;先复制&#xff0c;然后向上粘贴是正的&#xff0c;向下粘贴…

(附源码)ssm学生考勤管理系统 毕业设计 260952

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

C++日期和时间编程总结

一&#xff0c;概述二&#xff0c;C-style 日期和时间库 2.1&#xff0c;数据类型2.2&#xff0c;函数2.3&#xff0c;数据类型与函数关系梳理2.4&#xff0c;时间类型 2.4.1&#xff0c;UTC 时间2.4.2&#xff0c;本地时间2.4.3&#xff0c;纪元时间 2.5&#xff0c;输出时间和…

射频识别|计算机网络|第九讲数据通信和编码技术|奈氏准则和香农定理

1.数据通信概述 2.数据传输方式 3.传输介质 4.数据编码技术 (1)什么是比特率&#xff0c;什么是波特率&#xff0c;它们之间有何换算关系式&#xff1f; (2)数据通信系统的技术指标有哪些&#xff1f; (3)什么是信道容量&#xff0c;香农定理其中的各个参数的意义是什么&a…

Linux学习-76-LAMP环境搭建和LNMP环境搭建-前期准备

17 LAMP环境搭建和LNMP环境搭建-环境准备 LAMP是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务以及应用开发环境&#xff0c;是目前最为成熟也是比较传统的一种企业网站应用模式。 LAMP 环境搭建指的是在 Linux 操作系统中分别安装 Apache 网页服务器、…

社交礼仪,商务礼仪,酒桌上需注意的细节

目录 酒桌上需注意的细节 宴会酒桌上的注意事项 酒桌上的礼仪 一、敬酒要先​​​​​​​敬领导和长辈 二、学会聆听&#xff0c;不要夸夸其谈 三、主动倒酒 酒桌上需注意的细节 细节一&#xff1a;领导相互喝完才轮到自己敬酒。敬酒一定要站起来&#xff0c;双手举杯。…

uniapp微信小程序图片裁剪插件,支持自定义尺寸、定点等比例缩放、拖动、图片翻转、剪切圆形/圆角图片、定制样式

qf-image-cropper2.0 图片裁剪插件 1.效果预览&#xff1a; 2.平台支持&#xff1a; 1.支持微信小程序&#xff08;移动端、PC端、开发者工具&#xff09; 2.其他平台暂未测试兼容性未知 3.支持功能&#xff1a; 1.自定义裁剪尺寸 2.定点等比例缩放&#xff1a;移动端以双指触…

resnet(1)------像素与卷积

文章目录1. 像素2. 色彩3. 图片大小1. 像素 众所周知&#xff0c;图像是由像素构成的&#xff0c;像素越多&#xff0c;图片就越清晰&#xff0c;我们能获取到的信息就越多&#xff0c;不然那么多手机大厂疯狂宣传自己的像素有多高有多高干啥呢。 但是我们人对于图像的识别&am…

读取s3图片并保存至excel

1. 构建Client类&#xff0c;实现图片读取 1.1 导包&config client.py import os import numpy as np import pandas as pd import cv2 import boto3 # boto3安装: pip3 install opencv-python boto3config {"region_name": "us-east-1","end…

k8s安装使用教程 ingress

k8s安装使用教程ingressk8s安装使用教程ingressk8s安装使用教程ingressk8s安装使用教程ingressk8s安装使用教程ingress 注意 1 .服务器配置 大于等于 2核 4 G 2.服务器之间内网必须可以ping通 3.系统是CentOS-7.9.2111-x64 hostnamectl set-hostname xuegod1 设置主机名 每台机…

一个基于.Net高性能跨平台内网穿透工具

作为一名程序员&#xff0c;我们平常需要调试远程API&#xff08;如公众号回调&#xff09;、远程操作公司内部、家里的电脑&#xff0c;我们都会用到内网穿透的工具。 今天给大家推荐一个高性能跨平台内网穿透工具的开源项目。 项目简介 一个基于.Net开发的内网穿透工具&am…

Linux虚拟化网络之链路聚合

一、bond链路聚合技术 网卡bond是通过多张网卡绑定为一个逻辑网卡&#xff0c;实现本地网卡的冗余&#xff0c;带宽扩容和负载均衡&#xff0c;在生产场景中是一种常用的技术。 目前网卡绑定mode共有七种(0~6)bond0、bond1、bond2、bond3、bond4、bond5、bond6。 常用的有三…

JNI技术解析

一、JNI是什么? JNI是Java Native Interface的缩写,译为Java本地调用。JNI是一种技术。 二、JNI技术的用途? Java程序中的函数调用Native程序中的函数。Native一般指使用C/C++编写的函数。Native程序中的函数调用Java程序中的函数。三、注册JNI函数 静态注册Java层函数通过…

window和linux的nacos安装

Nacos注册中心 Nacos是阿里巴巴的产品&#xff0c;现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高 Nacos的下载 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; …

【计算机视觉】图像预处理

图像预处理 线性滤波与卷积 线性滤波 线性滤波使用的加权模式通常称为滤波的核&#xff0c;使用滤波的过程称为卷积。 卷积 对称性高斯模型 处理模糊问题的较好模型是对称性高斯模型 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QyrgiTg-16…

19-29-k8s-基本命令-yaml-kubectl

19-k8s-基本命令-yaml-kubectl&#xff1a; Kubernetes 集群的命令行工具kubectl 1、kubectl 命令格式&#xff1a; kubectl [command] [type] [name] [flags] 参数&#xff1a; command&#xff1a;指定要对资源执行的操作&#xff0c;例如create、get、describe、delete t…

ARM异常处理(2):中断的输入和挂起的6种情况分析

本节将描述中断输入和挂起的分析&#xff0c;这也同样适用于NMI输入&#xff0c;NMI在大多数情况下都将立即执行&#xff0c;除非&#xff1a;已经在执行NMI中断处理程序、由调试器暂停或由于一些严重的系统错误导致芯片锁定。 1、 当一个中断输入时&#xff0c;它将被挂起&…

Process.Start() 报错:系统找不到指定文件

今天在工作中遇到调用浏览器打开页面&#xff0c;代码报错&#xff1a;System.ComponentModel.Win32Exception:“系统找不到指定的文件。” 代码如下&#xff1a; ProcessStartInfo info new ProcessStartInfo("chrome.exe");// 打开一个新的chrome独立窗体启动info…