返回顶部
首页 > 资讯 > 精选 >如何顺利完成Kubernetes源码编译
  • 545
分享到

如何顺利完成Kubernetes源码编译

2023-06-04 16:06:11 545人浏览 八月长安
摘要

本篇文章给大家分享的是有关如何顺利完成kubernetes源码编译,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。为什么要编译源码 ?Kubernetes是一个非常棒的

本篇文章给大家分享的是有关如何顺利完成kubernetes源码编译,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

为什么要编译源码 ?

Kubernetes是一个非常棒的容器集群管理平台。通常情况下,我们并不需要修改k8s代码即可直接使用。但如果,我们在环境中发现了某个问题/缺陷,或按照特定业务需求需要修改K8S代码时,如定制Kubelet的StopContainer 逻辑、kube-scheduler的pod调度逻辑等。为了让修改生效,那么就需要编译K8S代码了。

Kubernetes源码编译,大致分为本地二进制可执行文件编译和Docker镜像编译两种。由于在我们的环境中,Kubernetes是由Docker容器方式运行的。故此我们需要采用后面一种方式编译,即镜像编译。

由于Kubernetes每个组件服务的镜像Dockerfile文件是由Kubernetes源码自动生成的,因此,社区并未提供每个组件的镜像Dockerfile文件。编译本地二进制可执行文件很简单,也更直接。而docker镜像编译资料却很少,且碍于某种特殊网络原因,会导致失败。此处,将介绍如何顺利的完成K8S镜像编译。

安装依赖 

安装golang

如何顺利完成Kubernetes源码编译

指定分支,下载 Kubernetes 源代码(默认$GoPATH目录为/root/go/)

如何顺利完成Kubernetes源码编译

本地二进制文件编译Kubernetes(方法一) 

修改运行平台配置参数(可选)

根据自己的运行平台(linux/amd64)修改hack/lib/golang.sh,把KUBE_SERVER_PLATFORMS,KUBE_CLIENT_PLATFORMS和KUBE_TEST_PLATFORMS中除linux/amd64以外的其他平台注释掉,以此来减少编译所用时间。

编译源码

进入Kubernetes根目录下

如何顺利完成Kubernetes源码编译

KUBE_BUILD_PLATFORMS指定目标平台,WHAT指定编译的组件,通过GOFLAGS和GOGCFLAGS传入编译时参数,如此处编译kubelet 组件。

如何顺利完成Kubernetes源码编译
  • 如果不指定WHAT,则编译全部。

  • make all是在本地环境中进行编译的。

  • make release和make quick-release在容器中完成编译、打包成docker镜像。

  • 编译kubelet这部分代码,也可执行make clean && make WHAT=cmd/kubelet

检查编译成果

编译过程较长,请耐心等待,编译后的文件在kubernetes/_output里。

或者进入cmd/kubelet (以kubelet为例子)

执行go build -v命令,如果没出错,会生成可执行文件kubelet

如何顺利完成Kubernetes源码编译

生成的可执行文件在当前文件夹下面

如何顺利完成Kubernetes源码编译

Docker镜像编译Kubernetes(方法二)

查看kube-cross的TAG版本号

如何顺利完成Kubernetes源码编译

查看debian_iptables_version版本号

如何顺利完成Kubernetes源码编译

这里,我使用DockerHub的Auto build功能,来构建K8s镜像。自然将编译需要用到的base镜像,放在了DockerHub上(也算是为促进国内K8s源码docker编译贡献绵薄之力吧!)。

如何顺利完成Kubernetes源码编译

把build/lib/release.sh中的–pull去掉,避免构建镜像继续拉取镜像:

如何顺利完成Kubernetes源码编译

编辑文件hack/lib/version.sh

将KUBE_git_TREE_STATE=”dirty” 改为 KUBE_GIT_TREE_STATE=”clean”,确保版本号干净。

执行编译命令

如何顺利完成Kubernetes源码编译

其中KUBE_BUILD_PLATFORMS=linux/amd64指定目标平台为linux/amd64,GOFLAGS=-v开启verbose日志,GOGCFLAGS=”-N -l”禁止编译优化和内联,减小可执行程序大小。

编译的K8s Docker镜像以压缩包的形式发布在_output/release-tars目录中

如何顺利完成Kubernetes源码编译

使用编译镜像

等待编译完成后,在_output/release-stage/server/linux-amd64/kubernetes/server/bin/目录下保存了编译生成的二进制可执行程序和docker镜像tar包。如导入kube-apiserver.tar镜像,并更新环境上部署的kube-apiserver镜像。

如何顺利完成Kubernetes源码编译

整个编译过程结束后,现在就可以到master节点上,修改/etc/kubernetes/manifests/kube-apiserver.yaml描述文件中的image,修改完立即生效。

以上就是如何顺利完成Kubernetes源码编译,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 如何顺利完成Kubernetes源码编译

本文链接: https://lsjlt.com/news/238572.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何顺利完成Kubernetes源码编译
    本篇文章给大家分享的是有关如何顺利完成Kubernetes源码编译,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。为什么要编译源码 ?Kubernetes是一个非常棒的...
    99+
    2023-06-04
  • Hi3861开发第一节:环境搭建,并顺利完成编译
    本次教程在纯Windows下环境搭建!!! 1.DecEco Device Tool下载和安装 步骤一:下载devicetool-windows-tool-3.1.0.400.zip版,下载网址:https://device.harmony...
    99+
    2023-09-12
    harmonyos 华为 嵌入式硬件
  • 亚马逊PingPong迁移:如何顺利完成?
    1. 了解PingPong PingPong是亚马逊卖家常用的一款跨境电商管理软件,它可以帮助卖家管理订单、库存、物流等业务。但是,由于亚马逊的政策变化和PingPong的功能限制,许多卖家开始考虑迁移至其他平台。 2. 选择新平台 在迁...
    99+
    2023-10-27
    亚马逊 顺利 PingPong
  • Android 源码如何编译调试
     android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloActivity入门程序了。这里先看几...
    99+
    2022-06-06
    调试 源码 Android
  • 源码如何编译安装MySQL5.6.12
    这篇文章主要为大家展示了“源码如何编译安装MySQL5.6.12”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“源码如何编译安装MySQL5.6.12”这篇文章吧...
    99+
    2024-04-02
  • 如何使用源码编译apache2.4
    如何使用源码编译apache2.4,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。[root@Jaking12 ~]# yum install&nb...
    99+
    2023-06-05
  • 如何用源码编译安装MySQL8.0.20
    这篇文章主要讲解了如何用源码编译安装MySQL8.0.20,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。1 概述本文章主要讲述了如何从源码编译安装MySQL社区版8.0.20,...
    99+
    2024-04-02
  • 如何修改并编译golang源码
    这篇文章主要讲解了“如何修改并编译golang源码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何修改并编译golang源码”吧!最近为了做Hyperledger Fabric国密改造,涉...
    99+
    2023-06-20
  • 如何理解Ubuntu编译源码包
    如何理解Ubuntu编译源码包,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。学习编译时,你可能会遇到Ubuntu编译问题,这里将介绍Ubuntu编译问题的解决方法,在这里拿...
    99+
    2023-06-17
  • 如何编译dotnet和aspnetcore源代码
    这篇文章主要介绍如何编译dotnet和aspnetcore源代码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!0.环境准备详见官方文档:《使用源码编译 ASP.NET Core》中的“Step 2: Install ...
    99+
    2023-06-29
  • 中日翻译在线翻译如何利用日语翻译软件完成
    中日翻译在线翻译如何利用日语翻译软件完成?对于喜欢看日漫的朋友们来说,肯定都有一颗去日本旅游的心,但是去日本旅游首先我们要解决中日语翻译的问题。今天小编将要分享给大家一个方法,帮助大家快速完成中日语翻译。...
    99+
    2023-06-04
  • 如何从源码编译安装 PHP-FPM
    随着 PHP 的普及和使用,PHP-FPM 也被越来越多的使用者与开发者所熟知和使用。由于 PHP-FPM 带有更先进的进程管理和重载工具,它被广泛地用于高访问量和 HTTP 高并发场景下的 PHP 程序。本篇文章将讲解如何从源码编译安装 ...
    99+
    2023-05-14
  • MySQL 5.7.9如何实现源码编译安装
    这篇文章主要介绍了MySQL 5.7.9如何实现源码编译安装,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、...
    99+
    2024-04-02
  • Mysql 8.0如何实现源码编译安装
    这篇文章主要为大家展示了“Mysql 8.0如何实现源码编译安装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mysql 8.0如何实现源码编译安装”这篇文章吧...
    99+
    2024-04-02
  • ​Javac编译器如何读取Java源代码
    这篇文章给大家分享的是有关Javac编译器如何读取Java源代码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Javac编译器读取Java源代码,并将其编译成字节代码,调用Javac的命令行如下:  C:>...
    99+
    2023-06-03
  • 如何对Python编译PyInstaller打包生成的exe文件进行反编译生成pyc、py源代码文件
    目录准备工作根据exe生成pyc文件根据pyc文件反编译为py文件参考总结准备工作 没有加壳的python编译并打包的exe文件python反打包代码(不知道这样叫是否合理):pyt...
    99+
    2023-01-18
    exe可以反编译成源码 exe程序反编译教程 如何反编译pyc文件
  • java如何编译成class
    在Java中,可以使用javac命令将Java源代码编译成class文件。以下是编译Java源代码的步骤:1. 打开命令提示符或终端...
    99+
    2023-09-06
    java
  • 基于CentOS6.4环境如何编译Spark-2.1.0源码
    小编给大家分享一下基于CentOS6.4环境如何编译Spark-2.1.0源码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1 写在前面的话 有些小伙伴可能会问:Spark官网不是已经提供了Spark针对不同版本的安装包了...
    99+
    2023-06-03
  • 如何进行Mysql5.6或Centos6.5源码编译安装
    这篇文章给大家介绍如何进行Mysql5.6或Centos6.5源码编译安装,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。## 说明 不同服务器需要改变 server_id ,同一台机器上需要改变 port 关闭防火墙[...
    99+
    2023-06-06
  • Android 利用 APT 技术在编译期生成代码
    APT(Annotation Processing Tool 的简称),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代码输入。现在有很多主流库都用上了 A...
    99+
    2022-06-06
    apt Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作