欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

k8s在go語(yǔ)言中的使用及client?初始化簡(jiǎn)介

 更新時(shí)間:2022年04月22日 12:45:35   作者:zziawan  
這篇文章主要為大家介紹了k8s在go語(yǔ)言中的使用及client?初始化簡(jiǎn)介,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

作為k8s官方維護(hù)的客戶端,k8s go-client對(duì)于go語(yǔ)言中使用k8s可以說是唯一選項(xiàng)。但是官方的使用示例我個(gè)人覺得并不是很清晰,尤其是對(duì)于對(duì)于k8s并不熟悉的用戶。這里我總結(jié)一下使用過程中碰到的坑,也希望能給有需要的人一些參考。

首先從官方示例說起:這里先解釋一下k8s連接問題。集群的節(jié)點(diǎn)上會(huì)有一個(gè).kube目錄(這個(gè)目錄一般在root用戶home目錄下)目錄中會(huì)存在一個(gè)config文件,文件中記錄了連接k8s集群所需的所有信息,如apiserver地址,用戶認(rèn)證token等。一般來(lái)說客戶端連接集群均需要此配置文件。一下就是官方示例代碼。

var kubeconfig *string
    //配置了config目錄就讀取該目錄下的config信息
    if home := homedir.HomeDir(); home != "" {
        kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
    } else {
        //否則就需要指定配置文件路徑
        kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
    }
    flag.Parse()
    config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
    if err != nil {
        panic(err)
    }
    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        panic(err)
    }

可以看到初始化go-client必須要指定config文件。但是實(shí)際使用中往往沒有這里理想化,比如我們的代碼運(yùn)行在集群外,再比如我們的代碼連接的client需要在不同集群上來(lái)回切換,更甚者我們需要連接的集群會(huì)隨時(shí)改變,集群數(shù)量改變,集群的連接信息改變??傊芏嗲闆r下無(wú)法直接從集群獲取到config文件,也無(wú)法使用固定的config文件。

總體上來(lái)說,使用場(chǎng)景包括集群內(nèi)和集群外訪問,同時(shí)也可以分為固定訪問和動(dòng)態(tài)訪問。對(duì)于集群內(nèi)且集群的配置是固定的,使用起來(lái)還是相當(dāng)簡(jiǎn)單。

1、集群內(nèi)且集群配置固定,以進(jìn)程方式運(yùn)行,即代碼編譯后直接以進(jìn)程的方式運(yùn)行在集群的某個(gè)節(jié)點(diǎn)上且只會(huì)訪問本地或外部固定集群。這種情況下,本地集群config文件路徑是固定的,外部集群可以提前把config文件放到本地,使用示例代碼的配置方式即可

2、集群內(nèi)且集群配置固定,以pod方式運(yùn)行。對(duì)于本地集群,雖然pod就跑在集群中,但是容器的因?yàn)楦綦x性,無(wú)法獲取集群的配置信息。此時(shí)可以通過默認(rèn)配置跟k8s RBAC進(jìn)行本地集群訪問,即使用pod中的默認(rèn)apiserver地址和端口環(huán)境變量(可以直接使用go-client的默認(rèn)config rest.InclusterConfig)連接集群,同時(shí)給pod配置集群的admin角色即可。也可以將.kube目錄掛載到pod上,通過讀取該目錄中的配置文件初始化客戶端。訪問外部集群跟1中的方式無(wú)太大差別。

3、需要訪問的集群不固定(集群數(shù)量隨時(shí)增減,集群認(rèn)證信息會(huì)過期),這種情況下無(wú)論是否運(yùn)行在容器中都不太好使用官方的示例代碼來(lái)連接集群。此種情況下需要一個(gè)能夠獲取集群認(rèn)證信息(token,user password等)的地方。有了這些信息代碼中就可以手動(dòng)新建config,通過這個(gè)config來(lái)初始化集群,同時(shí)在認(rèn)證信息失效后及時(shí)重新初始化

手動(dòng)指定apiserver地址,這里地址可以是url也可以主機(jī)加端口   

kubeconfig,er := clientcmd.BuildConfigFromFlags(apiUrl,"")

配置認(rèn)證信息,token或者用戶名加密碼或者其他認(rèn)證方式

kubeconfig.BearerToken = token

初始化client

clientset, err := kubernetes.NewFo,rConfig(kubeconfig)

當(dāng)發(fā)生變動(dòng)或者認(rèn)證信息失效時(shí),客戶端或報(bào)相應(yīng)的權(quán)限錯(cuò)誤,即可重新獲取認(rèn)證信息,重新初始化。這樣可以保證不重啟程序,不手動(dòng)修改配置的情況下適應(yīng)集群變動(dòng)

以上就是k8s在go語(yǔ)言中的使用及client 初始化簡(jiǎn)介的詳細(xì)內(nèi)容,更多關(guān)于k8s go client初始化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • GoFrame?ORM原生方法操作示例

    GoFrame?ORM原生方法操作示例

    這篇文章主要為大家介紹了GoFrame?ORM原生方法操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)JSON

    Go語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)JSON

    本文主要介紹了Go語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)JSON,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 自己動(dòng)手用Golang實(shí)現(xiàn)約瑟夫環(huán)算法的示例

    自己動(dòng)手用Golang實(shí)現(xiàn)約瑟夫環(huán)算法的示例

    這篇文章主要介紹了自己動(dòng)手用Golang實(shí)現(xiàn)約瑟夫環(huán)算法的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 手把手教你如何在Goland中創(chuàng)建和運(yùn)行項(xiàng)目

    手把手教你如何在Goland中創(chuàng)建和運(yùn)行項(xiàng)目

    歡迎來(lái)到本指南!我們將手把手地教您在Goland中如何創(chuàng)建、配置并運(yùn)行項(xiàng)目,通過簡(jiǎn)單的步驟,您將迅速上手這款強(qiáng)大的集成開發(fā)環(huán)境(IDE),輕松實(shí)現(xiàn)您的編程夢(mèng)想,讓我們一起開啟這段精彩的旅程吧!
    2024-02-02
  • GoLang之使用Context控制請(qǐng)求超時(shí)的實(shí)現(xiàn)

    GoLang之使用Context控制請(qǐng)求超時(shí)的實(shí)現(xiàn)

    這篇文章主要介紹了GoLang之使用Context控制請(qǐng)求超時(shí)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 解決Golang中g(shù)oroutine執(zhí)行速度的問題

    解決Golang中g(shù)oroutine執(zhí)行速度的問題

    這篇文章主要介紹了解決Golang中g(shù)oroutine執(zhí)行速度的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-05-05
  • 解析Go?中的?rune?類型

    解析Go?中的?rune?類型

    rune類型是?Go?語(yǔ)言的一種特殊數(shù)字類型,Go?語(yǔ)言通過rune處理中文,支持國(guó)際化多語(yǔ)言,本文給大家介紹Go?中的?rune?類型,感興趣的朋友一起看看吧
    2022-03-03
  • Go語(yǔ)言map元素的刪除和清空

    Go語(yǔ)言map元素的刪除和清空

    本文主要介紹了Go語(yǔ)言map元素的刪除和清空,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Golang分布式鎖詳細(xì)介紹

    Golang分布式鎖詳細(xì)介紹

    分布式鎖是控制分布式系統(tǒng)之間同步訪問共享資源的一種方式。如果不同的系統(tǒng)或是同一個(gè)系統(tǒng)的不同主機(jī)之間共享了一個(gè)或一組資源,那么訪問這些資源時(shí),需要通過一些互斥手段來(lái)防止彼此之間的干擾以保證一致性,在這種情況下,就需要使用分布式鎖了
    2022-10-10
  • 一文帶你掌握Golang中panic與recover的使用方法

    一文帶你掌握Golang中panic與recover的使用方法

    這篇文章主要介紹了Golang中panic與recover的作用和使用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考一下
    2023-04-04

最新評(píng)論