Kubernetes源码编译

环境准备

Kubernetes编译依赖Go环境和gcc,所以编译之前需要先下载好基本环境

Golang安装

Golang下载在官网Golang,当前最新版本为1.12(具体安装以版本为准)
1、wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz
2、tar -zxf go1.12.linux-amd64.tar.gz -C /usr/local/
3、export PATH=$PATH:/usr/local/go/bin
检查是否安装成功

gcc安装

Centos下gcc可以直接使用yum安装yum -y install gcc

编译

Kubernetes支持容器编译和主机编译,主机编译需要安装基本环境(Go、gcc),容器编译使用Docker的Dockerfile编译,也是比较流行的方式。编译对内存有一定的要求,建议机器内存至少在4G以上。

主机编译

主机编译可以直接使用kubernetes自带的Makefile,使用make即可编译。但是由于编译生成的二进制较多,一般情况下对不同的模块可以进行单独的编译,以kubelet为例:
1、配置编译环境:将下载好的kubernetes源码拷贝到$GOPATH/src/k8s.io目录,进入$GOPATH/src/k8s.io/kubernetes目录,GOPATH为/root/kube


2、使用 make all WHAT=cmd/kubelet GOFLAGS=-v命令编译 kubelet模块

3、编译生成的二进制包在 _output/bin目录下
如果想要知道编译使用的脚本,可以通过查看 Makefile文件代码,查看编译执行脚本

容器编译

容器编译由于使用Dockerfile,基础镜像访问的是k8s.gcr.io,国内访问不了

可以先将镜像下载下来,重新打tag,这里以阿里云为例:
1、docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross:v1.11.5-1
2、docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross:v1.11.5-1 k8s.gcr.io/kube-cross:v1.11.5-1
执行 ./build/run.sh hack/build-go.sh cmd/kubelet单独编译 kubelet模块,会看到一系列的输出,最终在 _output/dockerized/bin/linux/amd64目录下,可以查看到编译后的二进制包。

转载于:https://juejin.im/post/5c87902e6fb9a049d442a889

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes Job Controller 是 Kubernetes 中的一种 Controller,用于管理 Job 资,确保它们成功地完成任务。在 Kubernetes 中,Job 是一种用于运行任务的资类型,通常用于批处理处理和定时任务。 Job Controller 的主要功能是监控 Job 资的状态,并根据需要创建、更新、删除 Pod 资,以确保 Job 能够成功地运行。具体来说,Job Controller 会创建一个或多个 Pod 来执行 Job 的任务,如果 Pod 运行成功,则 Job 将被视为已完成;如果 Pod 运行失败,则 Job 将被视为已失败;如果 Pod 没有运行成功或失败,则 Job 将被视为正在运行。 Job Controller 的码实现位于 Kubernetes 代码库中的 `k8s.io/kubernetes/pkg/controller/job` 目录下。其中,Job Controller 的主要代码实现位于 `job_controller.go` 文件中。 Job Controller 的主要实现逻辑如下: 1. Job Controller 会使用 Kubernetes API 客户端来监视 Job 资的变化,包括创建、更新和删除操作。 2. 当 Job 资发生变化时,Job Controller 会根据 Job 的当前状态来决定如何处理它。如果 Job 还没有创建任何 Pod,则 Job Controller 将创建一个或多个 Pod 来执行 Job 的任务。如果 Job 已经创建了 Pod,则 Job Controller 将检查这些 Pod 的状态,并根据需要创建、更新或删除 Pod。 3. 当一个或多个 Pod 成功地完成 Job 的任务后,Job Controller 将删除这些 Pod。如果 Job 的任务失败,则 Job Controller 将根据需要重试任务,直到达到最大重试次数或任务成功为止。 4. 当 Job 被删除时,Job Controller 将删除与该 Job 相关的所有 Pod。 总之,Job Controller 是 Kubernetes 中非常重要的一种 Controller,它可以确保 Job 资的正确执行,并帮助用户轻松地管理批处理处理和定时任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值