Kubernetes 中的 Service Account

照例廣告放最前:Hyper 作為一家新的、小的、有夢想的、不做“Copy-to-China”的創(chuàng)業(yè)公司,我們歡迎想創(chuàng)新的、有想法的、有技術(shù)的小伙伴加盟,并且我們允許遠(yuǎn)程辦公。

Kubernetes 中的 Service Account 是個比較難以理解的概念,什么是 Service Account,到底是做什么的?文檔中如是說——

A service account provides an identity for processes that run in a Pod. (服務(wù)帳號為 Pod 中的進(jìn)程提供了一個 id)

不過,這個 Pod 中的進(jìn)程的 id 是做什么用的,在用不到的時候還真讓人費腦筋。管理文檔里說得更詳細(xì)一點,但是仍然沒有提到是做什么用的。

在這種時候,一個好的例子往往勝過文檔的解釋。實際上,kubernetes 的官方示例里就有 Service Account 的應(yīng)用。仔細(xì)看這個例子——在 Kubernetes 中運行 Cassandra。

大家知道,在 Cassandra 這種全對稱結(jié)構(gòu)的集群里,最先啟動的種子節(jié)點是最重要的,其他節(jié)點都要加入到種子節(jié)點的集群中才能保證啟動的是一個集群而不會分裂成多個集群,Cassandra、Akka 集群都有這個要求。

然而,在這個例子中,是先啟動一個節(jié)點,然后直接提高 Replica 數(shù)量,來做到多節(jié)點的,后面的節(jié)點是怎么找到種子節(jié)點的呢?仔細(xì)看例子的文檔——

However it also adds a custom SeedProvider to Cassandra. In Cassandra, a SeedProvider bootstraps the gossip protocol that Cassandra uses to find other nodes. The KubernetesSeedProvider discovers the Kubernetes API Server using the built in Kubernetes discovery service, and then uses the Kubernetes API to find new nodes

這里提到了,image 中的 Cassandra 有一個特殊的 KubernetesSeedProvider ,由它調(diào)用 Kubernetes 的 API 來獲得集群中已經(jīng)存在的節(jié)點的。注意,這里就是在 Pod 中運行的進(jìn)程調(diào)用 Kubernetes API 的地方,也就是 Service Account 工作的地方。

代碼之前,了無秘密,看這段代碼

    public List<InetAddress> getSeeds() {
        List<InetAddress> list = new ArrayList<InetAddress>();
        String host = "https://kubernetes.default.cluster.local";
        String serviceName = getEnvOrDefault("CASSANDRA_SERVICE", "cassandra");
        String podNamespace = getEnvOrDefault("POD_NAMESPACE", "default");
        String path = String.format("/api/v1/namespaces/%s/endpoints/", podNamespace);
        try {
            String token = getServiceAccountToken();

這里,給出了訪問的 endpoints API,并且要從本地取出 Service Account 的 Token,來獲得服務(wù)發(fā)現(xiàn)的信息。

綜上,Service Account 是 Kubernetes 用于集群內(nèi)運行的程序,進(jìn)行服務(wù)發(fā)現(xiàn)時調(diào)用 API 的帳號,帳號的 token 會直接掛載到 Pod 中,可以供程序直接使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ?Kubernetes介紹1.背景介紹云計算飛速發(fā)展- IaaS- PaaS- SaaSDocker技術(shù)突飛猛進(jìn)-...
    Zero___閱讀 14,883評論 0 21
  • kubernetes 簡介 一個迅速過一遍kubernetes 非常不錯的資源:基于Kubernetes構(gòu)建Doc...
    bradyjoestar閱讀 15,357評論 2 7
  • 什么是kubernetes Kubernetes是Google開源的容器集群管理系統(tǒng),其提供應(yīng)用部署、維護(hù)、 擴展...
    simle天晴閱讀 1,133評論 0 0
  • 1.1 Kubernetes是什么 首先,它是一個全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案; 其次,Kubernet...
    c84f3109853b閱讀 80,794評論 1 117
  • 第3天·21天告別拖延 #玩卡不卡·每日一抽#每一位都可以通過這張卡片覺察自己: 1、直覺他叫什么名字?美娜 2、...
    趙芙蓉584閱讀 233評論 0 0

友情鏈接更多精彩內(nèi)容