k8s原始碼分析 pdf k8s原始碼分析之Cobra

2021-10-12 23:03:17 字數 1233 閱讀 8959

一、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...