[TOC]

minikube代码分析

参考博客: minikube 源码分析

下载

minikube源码可以从github上下载:

git clone git@github.com:kubernetes/minikube.git

编译

环境:Ubuntu 16.04

# 代码下载到任意目录,这里是 /opt/kube/minikube> export GOPATH=~/gol/  # 设置GOPATH环境变量,这里为 ~/gol
> mkdir -p ~/gol/src/k8s.io/  # k8s.io这个目录名很重要,minikube的包都是以这个为基础的
> cd ~/gol/src/k8s.io/
> ln -s /opt/kube/minikube/ minikube  # 链接到源码目录即可
> make  # 通过Makefile编译CGO_ENABLED=1 go build -tags static_build -ldflags="-X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitCommit=d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitVersion=v1.6.4 -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitTreeState=clean -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.buildDate=2017-07-06T18:19:23Z -X k8s.io/minikube/pkg/version.version=v0.20.0 -X k8s.io/minikube/pkg/version.isoVersion=v0.20.0 -X k8s.io/minikube/pkg/version.isoPath=minikube/iso -s -w -extldflags '-static'" -o ./out/localkube ./cmd/localkube
GOBIN=/home/stack/gol//bin go get github.com/jteeuwen/go-bindata/...
/home/stack/gol//bin/go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets ./out/localkube deploy/addons/...
CGO_ENABLED=1 GOARCH=amd64 GOOS=linux go build --installsuffix cgo -ldflags="-X k8s.io/minikube/pkg/version.version=v0.20.0 -X k8s.io/minikube/pkg/version.isoVersion=v0.20.0 -X k8s.io/minikube/pkg/version.isoPath=minikube/iso -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitCommit=d6f433224538d4f9ca2f7ae19b252e6fcb66a3ae -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitVersion=v1.6.4 -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitTreeState=clean -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.buildDate=2017-07-06T18:19:23Z" -a -o out/minikube-linux-amd64 k8s.io/minikube/cmd/minikube
cp ./out/minikube-linux-amd64 ./out/minikube

输出信息要点:

  • minikube 0.20.0默认使用kubernetes v1.6.4

  • https://github.com/jteeuwen/go-bindata/下载了一个go-bindata

  • 编译的文件在out目录下,体积都不小:

> ls -lh minikube/out
total 267M
-rwxrwxr-x  1 stack stack 116M 7月   6 18:33 localkube*
-rwxrwxr-x  1 stack stack  76M 7月   6 18:35 minikube*
-rwxrwxr-x  1 stack stack  76M 7月   6 18:35 minikube-linux-amd64*

文件

  • cmd目录下是localkubeminikube程序的入口

  • cmd/minikube/cmd下是所有minikube子命令的实现,每个文件对应一个子命令

  • 使用cobra库来支持形如git的参数处理

Go项目一览

项目 描述
Kubernetes 十分钟带你理解Kubernetes核心概念
Hugo 使用hugo搭建个人博客站点
rkt 三年后,我们从 Docker 转到了 RKT
etcd etcd是什么东西?它和ZooKeeper有什么区别?
Moby 对于Docker改名Moby ,大家怎么看?
OpenShift OpenShift 3,红帽将容器的力量交给了开发者
Delve Golang / Go调试工具delve
GopherJS 将GO编绎成JavaScript,用GO语言来写前端代码
CockroachDB CockroachDB —— 像小强一样坚不可摧的数据库
Bleve full-text search and indexing for Go
ProjectAtomic 容器OS的选择与使用
GiantSwarm 容器生态圈项目一览
Nanopack The ideal platform for developers
rclone Rclone: 超好用的网盘 / VPS 数据同步、备份工具

更新k8s

参考文档:minikube/docs/contributors/updating_kubernetes.md

> ~/gol/src/k8s.io/minikube  # 先进入到 minikube 代码目录> go get github.com/tools/godep  # 需要godep,默认下载到$GOPATH/bin
> ./hack/godeps/godep-restore.sh  # 下载Kubernetes

Go语言简介

3 - 数据类型

Go的类型分为四类:

  1. 基本类型: 数字、字符串和布尔值

  2. 聚合类型: 数组和结构体

  3. 引用类型: 指针、列表、字典、函数和管道

  4. 接口类型: 接口

  • Go的数学、逻辑和比较运算符跟C相同,优先级也一样

  • 不同类型之间要做显式转换,mismatched types int32 and int16

  • 任何类型都支持转换操作T(x)

  • rune是支持Unicode的单个字符类型

  • float类型通过math包支持IEEE 754规范(一如既往的诡异)

    • 原书给了一个变态的例子演示生成三维曲面,用go get gopl.io/ch3/surface/可以拿下来看看...(书中还附带讲了一下三维空间和等轴投影,这样真的适合用在基础语言教程里么...TLTD;

  • 支持复数(例程是用代码生成mandelbrot分形...这是图形学的书吧)

  • bool类型和数字类型0, 1之间没有隐式转换

  • 字符串是字节的集合,可以包含0,默认UTF-8编码

  • 字符串支持切分,如s[:5], s[7:], s[:],跟Python类似

  • 转义字符跟C一样,解释也一样\r \n \t \\ ...

  • `` 反引号表示原义字符,没有转义,可以用于正则、模板等

  • bytes, strings, strconv, unicode是字符串操作特别重要的四个包

  • 常量支持布尔、字符串和数字

  • iota是常量生成器,初始为0,其余每一项递增

type Weekday int
const (Sunday Weekday = iota   // 0Monday                  // 1Tuesday                 // 2 ...WednesdayThursdayFridaySaturday
)
  • 常量可以无类型,运算时适配当前类型

minikube代码分析与Go语言 - 3相关推荐

  1. 手写内存池以及原理代码分析【C语言】

    内存池是对堆进行管理 当进程执行时,操作系统会分出0~4G的虚拟内存空间给进程,程序员可以自行管理(分配.释放)的部分就是mmap映射区.heap堆区,而内存池管理的部分就是用户进程的堆区. 为什么要 ...

  2. C语言 03-第一个C程序代码分析

    本文目录 一.代码分析 二.开发和运行C程序的步骤 三.总结 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语 ...

  3. 动图图解C语言插入排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  4. 动图图解C语言选择排序算法,含代码分析

    C语言文章更新目录 C语言学习资源汇总,史上最全面总结,没有之一 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C ...

  5. 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...

    机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...

  6. 静态代码分析工具清单:开源篇(各语言)

    本文是一个静态代码分析工具的清单,共有26个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

  7. arm9 c语言函数库,s3c2410(ARM9)启动代码分析(转载)

    ADS下C语言的入口方式和ROM镜像文件的生成 这部分介绍下ADS下如何生成可以运行的ROM镜像文件,我们知道当程序下载到flash中运行的时候,对于RW.ZI数据就存在着两个环境,一个load环境, ...

  8. C语言与木马恶意代码分析和360安全防护揭秘

    C语言与木马恶意代码分析和360安全防护揭秘 http://feixueteam.net/thread-436-1-1.html

  9. java兔子问题编程思路详解_java语言求解兔子问题代码分析

    1.思考 兔子问题,是费氏数列的形象化说法,它是由一位名为Fibonacci的数学家在它的著作中提出的一个问题. 2.描述 它体术的问题是:若有一只免子每个月生一只小免子,一个月后小免子也开始生产.起 ...

最新文章

  1. 【C语言】 strstr查找子字符串函数以及模拟实现讲解
  2. 马哥第3期运维班第二周作业
  3. 图解TCP/IP(第5版)PDF
  4. 设计模式复习-建造者模式
  5. 纯净pe工具_微PE工具箱2.0
  6. leecode26 删除排序数组中的重复项
  7. C++中派生类隐式调用与显式调用基类的构造函数
  8. java 声明抽象方法_java – 类必须声明为abstract或实现抽象方法错误
  9. C语言 VS输入输出字符设置
  10. IntelliJ IDEA 2021 for Mac(最好的java开发工具)正式版支持m1芯片
  11. 如何使用Keras功能API进行深度学习
  12. jQuery正则表达式实现表单验证功能(注册)
  13. Photoshop抠图笔记
  14. python为什么卸载不了_为什么Python3.8删除不了?
  15. ios开发者联系方式
  16. 3、核对单《数据收集工具与技术》
  17. 估计标准误差syx_相关系数与估计标准误差的关系
  18. vue - vue中使用西瓜播放器xgplayer
  19. ftrack与Adobe家三剑客!
  20. 从这些企业的数字化转型实践中,你能得到什么启发

热门文章

  1. 慕课:软件测试各章节答案
  2. 在调试器中看阿里的软件兵团
  3. 搜索软件Elastic上市:市值近50亿美元 是开源项目商业化范本
  4. 01_心理咨询_微信小程序项目实战_项目概述
  5. ava.net.UnknownServiceException: CLEARTEXT communication ** not permitted by network security polic
  6. sql中的IF ELSE使用方法
  7. 从软件工程到软件测试
  8. Python暴力破解zip文件
  9. 【hjmmm网络流24题补全计划】
  10. Spring Boot实战,整合Prometheus实现应用监控