一、cobra簡介
cobra:既是乙個用來建立強大的現代cli命令列的golang庫,也是乙個生成程式應用和命令列檔案的程式.
cobra主要提供的功能
* 完全相容posix命令列模式
* 巢狀子命令subcommand
* 支援全域性,區域性,串聯flags
* 自動生成commands和flags的幫助資訊
* 自動識別-h,--help幫助flag
* 自動生成應用程式在bash下命令自動完成功能
* 自動生成應用程式的man手冊
* 命令列別名
* 自定義help和usage資訊
獲取和使用
獲取和初始化
[tips] cobra init 是在gopath 目錄下進行建立的
1. 使用cobra包
2. 使用cobra建立專案
cobra init demo
3. 最新建立專案語法:
cobra init --pkg-name demo demo
引數--pkg-name如下圖所示
大致目錄
image.png
cobra中的重要三個概念
commands 代表行為
arguments 代表命令列引數
flags 代表命令列的選項
二、k8s中原始碼解析之cobra
1.1 下面以kubeadm為例進行說明:
入口函式在: cmd/kubeadm/kubeadm.go
image.png
image.png
大致分析:
run()方法在設定了一系列引數屬性後,直接建立了乙個cmd物件,然後返回cmd.execute()啟動kubeadm模組
這裡使用 pflag設定相關引數屬性,呼叫addgoglagset(flag.commandline)相容golang 的flag包
cmd.newkubeadmcommand(os.stdin, os.stdout, os.stderr) 方法是cobra的命令列的根目錄
1.3 檢視newkubeadmcommand()實現方法
func newkubeadmcommand(in io.reader, out, err io.writer) *cobra.command
1.4 cmd.flags()設定命令引數
image.png
K8s部署prometheus監控K8s細節
prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...
k8s原始碼分析準備工作 原始碼準備
寫在前面 本文已過時,請移步 daniel hu s blog 作業系統 我們使用linux作為k8s原始碼分析和除錯環境,fedora centos ubuntu都行,我這裡使用fedora golang相關 mkdir p root go src k8s.io cd root go src k8...
k8s 多租戶 k8s 基礎介紹
備註 1 每乙個pod裡執行著乙個特殊的容器 pause容器,其他容器都是業務容器,這些業務容器共享pause容器的網路棧和volume 邏輯卷 掛載卷。因此他們之間的通訊和資料交換更為高效。2 k8s設計了pod物件,將每個服務程序包裝到相應的pod中,使其成為pod中執行的乙個容器 contai...