国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Heapster啟動的進(jìn)一步研究

printempw / 3143人閱讀

摘要:若我們將這兩個參數(shù)分別設(shè)定值為和那么啟動后,執(zhí)行命令,并詳細(xì)地查看該可以看到,該中有了兩個和,他們分別是和進(jìn)行再次加密后的數(shù)據(jù)。

kube-apiserver啟動的時候如果加了如下的參數(shù):

--admission_control=ServiceAccount

會自動生成一個apiserver.crt和apiserver.key文件,所在目錄是/var/run/kubernetes/,并且程序啟動后會發(fā)現(xiàn),有一個默認(rèn)的serviceaccount,這種模式下我們創(chuàng)建的resource都會有一個默認(rèn)的serviceaccount。

kube-controller-manager啟動時有這么兩個參數(shù):

--root-ca-file="": If set, this root certificate authority will be included in service account"s token secret. This must be a valid PEM-encoded CA bundle.

--service-account-private-key-file="": Filename containing a PEM-encoded private RSA key used to sign service account tokens.

這兩個參數(shù)指定了要用哪些文件做token和根證書。若我們將這兩個參數(shù)分別設(shè)定值為apiserver.crt和apiserver.key,那么啟動后,執(zhí)行:

kubectl get secrets

命令,并詳細(xì)地查看該secret可以看到,該secret中有了兩個data:ca.crt和token,他們分別是apiserver.crt和apiserver.key進(jìn)行再次加密后的數(shù)據(jù)。

這樣,我們創(chuàng)建一個heapster,heapster所屬的serviceaccount的secret中的兩個data,會被copy到創(chuàng)建出來的容器中,我們可以進(jìn)入該容器找到兩個數(shù)據(jù)。

我們看到kubernetes的源碼中,apiserver的模塊有這么一個函數(shù),這個函數(shù)在啟動apiserver的時候會被調(diào)用:

func GenerateSelfSignedCert(host, certPath, keyPath string, alternateIPs []net.IP, alternateDNS []string) error {
        priv, err := rsa.GenerateKey(rand.Reader, 2048)
        if err != nil {
            return err
        }

        template := x509.Certificate{
            SerialNumber: big.NewInt(1),
            Subject: pkix.Name{
                CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()),
            },
            NotBefore: time.Now(),
            NotAfter:  time.Now().Add(time.Hour * 24 * 365),

            KeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
            ExtKeyUsage:           []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
            BasicConstraintsValid: true,
        }
        ...
    }

這個函數(shù)的功能是創(chuàng)建crt和key,調(diào)用這個函數(shù)的地方是kubernetescmdkube-apiserverappserver.go

if s.TLSCertFile == "" && s.TLSPrivateKeyFile == "" {
                    s.TLSCertFile = path.Join(s.CertDirectory, "apiserver.crt")
                    s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "apiserver.key")
                    // TODO (cjcullen): Is PublicAddress the right address to sign a cert with?
                    alternateIPs := []net.IP{config.ServiceReadWriteIP}
                    alternateDNS := []string{"kubernetes.default.svc", "kubernetes.default", "kubernetes"}
                    // It would be nice to set a fqdn subject alt name, but only the kubelets know, the apiserver is clueless
                    // alternateDNS = append(alternateDNS, "kubernetes.default.svc.CLUSTER.DNS.NAME")
                    if err := util.GenerateSelfSignedCert(config.PublicAddress.String(), s.TLSCertFile, s.TLSPrivateKeyFile, alternateIPs, alternateDNS); err != nil {
                        glog.Errorf("Unable to generate self signed cert: %v", err)
                    } else {
                        glog.Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile)
                    }
                }

通過上一篇可以知heapster啟動后是要向apiserver做https請求的,所以crt和token必不可少。那為什么我們不直接拿這邊的crt和key去用呢?

這篇文章詳細(xì)地講了證書生成的相關(guān)知識,其中的“添加了SAN的證書生成的過程”和上文源碼中調(diào)用生成證書的地方是相似的,但是生成證書的過程中,hostname部分引用了了一個host@time.Now()作為/CN。見源代碼中這句:

 Subject: pkix.Name{
                    CommonName: fmt.Sprintf("%s@%d", host, time.Now().Unix()),
                },

這句將生成crt的時候的hostname設(shè)置成了host@time,比如vm-56-65@23542343562 這樣的形式,而且每次重啟了apiserver,hostname都會變,容器內(nèi)部可不知道這個hostname,所以根本沒法訪問。

heapster內(nèi)部會記錄apiserver的幾個common name,即kubernetes源碼中的:

[]string{"kubernetes.default.svc", "kubernetes.default", "kubernetes"}

我認(rèn)為這肯定是要與kubernetes自生成的crt公用而設(shè)計的。 至于為什么不行,等有時間再研究。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/32431.html

相關(guān)文章

  • kubernetes下heapster部署案例

    摘要:舉個例子,我們在這種狀態(tài)下創(chuàng)建一個,然后執(zhí)行在中會發(fā)現(xiàn)有了字段,并且裝載了一個是的,這個就是我們這個下的。 注:本案例在我的部署環(huán)境下是可行的,但不保證在所有環(huán)境下都可行。我盡可能講得直白而詳細(xì),因為我自己也才剛開始接觸,已經(jīng)做過深入研究的可以瀏覽,若有什么錯誤,煩請指正,感激不盡! 我的環(huán)境: K8S1.0.0+flannel+docker1.6的分布式集群。 這里先不贅述fla...

    Ali_ 評論0 收藏0
  • kubernetes下heapster部署案例

    摘要:舉個例子,我們在這種狀態(tài)下創(chuàng)建一個,然后執(zhí)行在中會發(fā)現(xiàn)有了字段,并且裝載了一個是的,這個就是我們這個下的。 注:本案例在我的部署環(huán)境下是可行的,但不保證在所有環(huán)境下都可行。我盡可能講得直白而詳細(xì),因為我自己也才剛開始接觸,已經(jīng)做過深入研究的可以瀏覽,若有什么錯誤,煩請指正,感激不盡! 我的環(huán)境: K8S1.0.0+flannel+docker1.6的分布式集群。 這里先不贅述fla...

    Jinkey 評論0 收藏0
  • Kubernetes監(jiān)控之Heapster源碼分析

    摘要:源碼版本簡介是下的一個監(jiān)控項目,用于進(jìn)行容器集群的監(jiān)控和性能分析。基本的功能及概念介紹可以回顧我之前的一篇文章監(jiān)控之介紹。在源碼分析之前我們先介紹的實現(xiàn)流程,由上圖可以看出會從各個上獲取相關(guān)的監(jiān)控信息,然后進(jìn)行匯總發(fā)送給后臺數(shù)據(jù)庫。 源碼版本 heapster version: release-1.2 簡介 Heapster是Kubernetes下的一個監(jiān)控項目,用于進(jìn)行容器集群的監(jiān)控...

    gclove 評論0 收藏0
  • 閑談 Kubernetes 主要特性和經(jīng)驗分享

    摘要:主要介紹的主要特性和一些經(jīng)驗。先從整體上看一下的一些理念和基本架構(gòu),然后從網(wǎng)絡(luò)資源管理存儲服務(wù)發(fā)現(xiàn)負(fù)載均衡高可用安全監(jiān)控等方面向大家簡單介紹的這些主要特性。集群范圍內(nèi)的監(jiān)控主要由和如構(gòu)建。 主要介紹 Kubernetes 的主要特性和一些經(jīng)驗。先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgra...

    Guakin_Huang 評論0 收藏0
  • 閑談 Kubernetes 主要特性和經(jīng)驗分享

    摘要:主要介紹的主要特性和一些經(jīng)驗。先從整體上看一下的一些理念和基本架構(gòu),然后從網(wǎng)絡(luò)資源管理存儲服務(wù)發(fā)現(xiàn)負(fù)載均衡高可用安全監(jiān)控等方面向大家簡單介紹的這些主要特性。集群范圍內(nèi)的監(jiān)控主要由和如構(gòu)建。 主要介紹 Kubernetes 的主要特性和一些經(jīng)驗。先從整體上看一下Kubernetes的一些理念和基本架構(gòu), 然后從網(wǎng)絡(luò)、 資源管理、存儲、服務(wù)發(fā)現(xiàn)、負(fù)載均衡、高可用、rolling upgra...

    shevy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<