前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s源码-源码编译及目录详解

k8s源码-源码编译及目录详解

原创
作者头像
ascehuang
修改2019-11-17 20:40:17
7K0
修改2019-11-17 20:40:17
举报
文章被收录于专栏:k8s源码解析k8s源码解析

源码下载及编译(本文以1.16.0-alpha.3为例)

k8s github地址: https://github.com/kubernetes/kubernetes

k8s的编译有两种方式:

1: go环境:

代码语言:txt
复制
mkdir -p $GOPATH/src/k8s.io
cd $GOPATH/src/k8s.io
git clone https://github.com/kubernetes/kubernetes
cd kubernetes
make

编译完成之后,会在./_output/bin/目录下生成对应的可执行文件,如下图:

image.png
image.png

如果只是编译某个组件,可以使用命令make all WHAT=cmd/kubelet GOFLAGS=-v

2: docker 环境:

代码语言:txt
复制
git clone [https://github.com/kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
cd kubernetes
make quick-release

docker环境编译,mac系统下需要安装 gnu.tar, 使用brew install gnu.tar安装,最终生成的二进制文件在_output/dockerized/bin/linux/amd64目录下,也可以使用./build/run.sh hack/build-go.sh cmd/kubelet单独编译某个组件

目录概览

k8s源码采用 go module(go 1.11rc1开始支持)管理包,go module的使用方法可以参考该文档:https://talks.godoc.org/github.com/myitcv/talks/2018-08-15-glug-modules/main.slide

如下图所示,部分module直接引用staging下面的包

image.png
image.png

|--api // 存放api规范相关的文档

|------api-rules //已经存在的违反Api规范的api

|------openapi-spec //OpenApi规范

|--build // 构建和测试脚本

|------run.sh //在容器中运行该脚本,后面可接多个命令:make, make cross 等

|------copy-output.sh //把容器中_output/dockerized/bin目录下的文件拷贝到本地目录

|------make-clean.sh //清理容器中和本地的_output目录

|------shell.sh // 容器中启动一个shell终端

|------......

|--cluster // 自动创建和配置kubernetes集群的脚本,包括networking, DNS, nodes等

|--cmd // 内部包含各个组件的入口,具体核心的实现部分在pkg目录下

|--hack // 编译、构建及校验的工具类

|--logo // kubernetes的logo

|--pkg // 主要代码存放类,后面会详细补充该目录下内容

|------kubeapiserver

|------kubectl

|------kubelet

|------proxy

|------registry

|------scheduler

|------security

|------watch

|------......

|--plugin

|------pkg/admission //认证

|------pkg/auth //鉴权

|--staging // 这里的代码都存放在独立的repo中,以引用包的方式添加到项目中

|------k8s.io/api

|------k8s.io/apiextensions-apiserver

|------k8s.io/apimachinery

|------k8s.io/apiserver

|------k8s.io/client-go

|------......

|--test //测试代码

|--third_party //第三方代码,protobuf、golang-reflect等

|--translations //不同国家的语言包,使用poedit查看及编辑

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 源码下载及编译(本文以1.16.0-alpha.3为例)
  • 目录概览
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档