物聯網學習日記9

1.數據卷容器
解析:如果用戶需要在多個容器之間共享一些持續更新的數據,最簡單的方式就是使用數據卷容器。數據卷容器也是一個容器,但是它的目的是專門提供數據卷給其它容器掛載。

2.Dockerfile文件
解析:Dockerfile主體內容分爲四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啓動時執行指令。

3.Dockerfile操作指令
解析:
[1]RUN:運行指定命令
[2]CMD:啓動容器時指定默認執行的命令
[3]ADD:添加內容到鏡像
[4]COPY:複製內容到鏡像

4.Swarm
解析:Docker Swarm提供Docker容器集羣服務,是Docker官方對容器雲生態進行支持的核心方案。使用它用戶可以將多個Docker主機抽象爲大規模的模擬Docker服務,快速打造一套容器雲平臺。

5.K8S中的Service
解析:
[1]一個Service可以看作一組提供相同服務的Pods的對外訪問接口,Service作用於哪些Pods是通過label selector來定義的,這些Pods能被Service訪問,Pod之間的發現和路由由Kubernetes Service處理。
[2]Service有四種type:ClusterIP[默認]、NodePort、LoadBalancer、ExternalName。其中NodePort和LoadBalancer兩類型的Services可以對外提供服務。

6.k8s client-go
解析:Go clients for talking to a kubernetes cluster.

7.查看所有pod
kubectl get pods -A -o wide

8.查看服務
kubectl get svc -n kubernetes-dashboard -o wide

9.網絡文件系統
解析:網絡文件系統,英文Network File System[NFS],是由SUN公司研製的UNIX表示層協議[presentation layer protocol],能使使用者訪問網絡上別處的文件就像在使用自己的計算機一樣。

10.etcd
解析:K8S集羣中的信息交由etcd維護,etcd是一個分佈式的鍵值數據存儲,它是集羣中信息的真實來源。

11.kubelet服務
解析:kubelet用於管理每個節點上的pod。

12.複製控制器[replication controller]
解析:複製控制器是一個Kubernetes服務,用來確保存在正確數量的pod節點運行在集羣中。

13.go mod tidy
解析:增加缺失的包,移除沒用的包。

14.goroutine和channel
解析:goroutine和channel是GO語言秉承的CSP[Communicating Sequential Process]併發模式的重要實現基礎。

15.defer
解析:defer是GO的函數延遲調用。

16.PHONY
解析:
[1]Makefile中所有不會產生與目標名稱相同名稱的輸出文件的目標都應爲PHONY。這通常包括all,install,clean,distclean等。
[2].PHONY是一個僞目標,可以防止在Makefile中定義的只執行命令的目標和工作目錄下的實際文件出現名字衝突,另一種是提交執行makefile時的效率。

17.環境變量GO111MODULE
解析:
[1]GO111MODULE=off go命令從不使用新模塊支持。使用GOPATH模式[查找vendor目錄和GOPATH路徑下的依賴]
[2]GO111MODULE=on go命令開啓模塊支持,只根據go.mod下載和查找依賴
[3]GO111MODULE=auto默認值,go命令根據當前目錄啓用或禁用模塊支持。僅噹噹前目錄位於$GOPATH/src之外並且其本身包含go.mod文件或位於包含go.mod文件的目錄下時,才啓用模塊支持。

18.Go交叉編譯
解析:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./main.go

19.CGO_ENABLED
解析:使用CGO_ENABLED=0來控制go build是否使用CGO編譯器。

20.golang交叉編譯支持
解析:

go tool dist list

21.$@和$#
解析:
[1]$@:表示所有腳本參數的內容
[2]$#:表示返回所有腳本參數的個數。

22.Go項目執行命令
解析:
[1]go vet:靜態檢查
[2]go test:運行單元測試
[3]go fmt:格式化
[4]go build:編譯
[5]go run:運行

23.Go項目的Makefile
解析:
[1]make default:編譯
[2]make fmt:格式化
[3]make vet:靜態檢查
[4]make test:運行測試
[5]make install:下載依賴庫
[6]make clean:移除編譯的二進制文件

24.gcflags
解析:go build可以用-gcflags給go編譯器傳入參數,也就是傳給go tool compile的參數,因此可以用go tool compile --help查看所有可用的參數。

25.go build ldflags
解析:

go build -ldflags "-w -s -X main.Version=${VERSION} -X main.Build=${BUILD}"

[1]-w:去掉DWARF調試信息,得到的程序就不能用gdb調試了。
[2]-s:去掉符號表,panic時候的stack trace就沒有任何文件名/行號信息了,這個等價於普通C/C++程序被strip的效果。
[3]-X:設置包中的變量值。

參考文獻:
[1]kubernetes/client-go:https://github.com/kubernetes/client-go
[2]Makefile中.PHONY的作用:https://www.cnblogs.com/idorax/p/9306528.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章