minikube代码分析与Go语言 - 3

前端之家收集整理的这篇文章主要介绍了minikube代码分析与Go语言 - 3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

[TOC]

minikube代码分析

参考博客minikube 源码分析

下载

minikube源码可以从github上下载:

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

编译

环境:Ubuntu 16.04@H_502_16@

# 代码下载到任意目录,这里是 /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@H_502_16@默认使用kubernetes v1.6.4@H_502_16@

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

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

> 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@H_502_16@目录下是localkube@H_502_16@和minikube@H_502_16@程序的入口

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

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@H_502_16@

> ~/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@H_502_16@的数学、逻辑和比较运算符跟C@H_502_16@相同,优先级也一样

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原文链接:https://www.f2er.com/go/188282.html

猜你在找的Go相关文章