摘要:代码分析参考博客源码分析下载源码可以从上下载编译环境代码下载到任意目录,这里是设置环境变量,这里为这个目录名很重要,的包都是以这个为基础的链接到源码目录即可通过编译
[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目录下是localkube和minikube程序的入口
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 数据同步、备份工具 |
参考文档: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 # 下载KubernetesGo语言简介 3 - 数据类型
Go的类型分为四类:
基本类型: 数字、字符串和布尔值
聚合类型: 数组和结构体
引用类型: 指针、列表、字典、函数和管道
接口类型: 接口
Go的数学、逻辑和比较运算符跟C相同,优先级也一样
不同类型之间要做显式转换,mismatched types int32 and int16
任何类型都支持转换操作T(x)
rune是支持Unicode的单个字符类型
float类型通过math包支持IEEE 754规范(一如既往的诡异)
原书给了一个{{BANNED}}的例子演示生成三维曲面,用go get gopl.io/ch3/surface/可以拿下来看看...(书中还附带讲了一下三维空间和等轴投影,这样真的适合用在基础语言教程里么...TLTD;)
支持复数(例程是用代码生成mandelbrot分形...这是图形学的书吧)
bool类型和数字类型0, 1之间没有隐式转换
字符串是字节的集合,可以包含0,默认UTF-8编码
字符串支持切分,如s[:5], s[7:], s[:],跟Python类似
转义字符跟C一样,解释也一样 ...
`` 反引号表示原义字符,没有转义,可以用于正则、模板等
bytes, strings, strconv, unicode是字符串操作特别重要的四个包
常量支持布尔、字符串和数字
iota是常量生成器,初始为0,其余每一项递增
type Weekday int const ( Sunday Weekday = iota // 0 Monday // 1 Tuesday // 2 ... Wednesday Thursday Friday Saturday )
常量可以无类型,运算时适配当前类型
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/32567.html
摘要:闲言最近需要看简写为和相关的技术资料,顺带学一下语言。语言始于年月的三个工程师,年月正式宣布。项目包括语言工具和标准库,以及一切从简的理念。语言本身成熟且稳定,并且保证向下兼容。 [TOC] 闲言 最近需要看Kubernetes(简写为k8s)和docker相关的技术资料,顺带学一下Go语言。 尝试了通过minikube部署遇到镜像下载和网络配置等等各种问题。虽然k8s很火热,但是资料...
摘要:打开终端执行,再开一个终端输入输出,则表示该服务没有问题。将服务打包成镜像,然后将镜像实例化并运行,方便部署。此处以我的账号为例,需要推送到你自己的账号。是一种自动化运维工具,本文主要需要了解,,三个概念。至此成功使用部署应用。 本文将以一个简单的示例演示如何使用 Docker 与 Kubernetes 部署应用上线。 Http Service 首先使用 Go 语言搭建一个简单的 Ht...
摘要:打开终端执行,再开一个终端输入输出,则表示该服务没有问题。将服务打包成镜像,然后将镜像实例化并运行,方便部署。此处以我的账号为例,需要推送到你自己的账号。是一种自动化运维工具,本文主要需要了解,,三个概念。至此成功使用部署应用。 本文将以一个简单的示例演示如何使用 Docker 与 Kubernetes 部署应用上线。 Http Service 首先使用 Go 语言搭建一个简单的 Ht...
阅读 3399·2021-10-08 10:15
阅读 5439·2021-09-23 11:56
阅读 1466·2019-08-30 15:55
阅读 444·2019-08-29 16:05
阅读 2724·2019-08-29 12:34
阅读 2036·2019-08-29 12:18
阅读 913·2019-08-26 12:02
阅读 1650·2019-08-26 12:00