2017-06-22 205 views
0

所以我剛開始使用Kubernetes API服務器,我試過了這個例子:Kubernetes API服務器

from kubernetes import client, config 
def main(): 
    # Configs can be set in Configuration class directly or using helper 
    # utility. If no argument provided, the config will be loaded from 
    # default location. 
    config.load_kube_config() 

    v1 = client.CoreV1Api() 
    print("Listing pods with their IPs:") 
    ret = v1.list_pod_for_all_namespaces(watch=False) 
    for i in ret.items: 
     print("%s\t%s\t%s" % 
       (i.status.pod_ip, i.metadata.namespace, i.metadata.name)) 
if __name__ == '__main__': 
    main() 

這工作,但它返回的是在我的本地minikube豆莢,我想這是莢在這裏的kubernetes服務器: http://192.168.237.115:8080 我該怎麼做?

當我做kubectl config view,我得到這個:

apiVersion: v1 
clusters: 
- cluster: 
    certificate-authority: /home/piyush/.minikube/ca.crt 
    server: https://192.168.99.100:8443 
    name: minikube 
contexts: 
- context: 
    cluster: minikube 
    user: minikube 
    name: minikube 
current-context: minikube 
kind: Config 
preferences: {} 
users: 
- name: minikube 
    user: 
    client-certificate: /home/piyush/.minikube/apiserver.crt 
    client-key: /home/piyush/.minikube/apiserver.key 

我知道這是本地羣集我設立。我想知道如何修改此做出API請求kubernetes服務器上http://192.168.237.115:8080

回答

0

你能告訴我該文件~/.kube/config

如果更新了它的API服務器,蟒蛇模塊kubernetes會自動拿起您提名的新API服務器。

- cluster: 
    certificate-authority: [Update real ca.crt here] 
    server: http://192.168.237.115:8080 

有在~/.kube/config其他變更,你最好直接從遠程服務器kubernetes的配置。

與遠程kubernetes API服務器配置成功後,你應該罰款運行kubectl並得到部署,守護程序等

那麼你應該罰款與蟒蛇kubernetes SDK運行

+0

所以這是我所得到的,當我做'kubectl配置視圖':'apiVersion:V1 集羣: - 集羣: 證書頒發機構:/home/piyush/.minikube/ca.crt 服務器:HTTPS: //192.168.99.100:8443 名稱:minikube 背景: - 背景: 集羣:minikube 用戶:minikube 名稱:minikube 當前上下文:minikube 類型:配置 喜好:{} 用戶: - 名稱:minikube 用戶: 客戶端證書:/home/piyush/.minikube/apiserver.crt client-key:/home/piyush/.minikube/apiserver.key' –

+0

我知道我必須修改這個來添加集羣。但是我對證書頒發機構有什麼價值? –

+0

您可以先更新原始問題中的配置文件嗎? – BMW

2

config.load_kube_config()需要作爲參數使用context。如果通過None(默認),則將使用當前上下文。您目前的環境可能是您的minikube。

在這裏看到: https://github.com/kubernetes-incubator/client-python/blob/436351b027df2673869ee00e0ff5589e6b3e2b7d/kubernetes/config/kube_config.py#L283

config.load_kube_config(context='some context')

如果你不熟悉Kubernetes上下文, Kubernetes下~/.kube/config(默認位置)存儲配置。在其中,您可以找到您可能訪問的每個羣集的上下文定義。名爲current-context的字段定義了您當前的上下文。

您可以發出以下命令:

kubectl config current-context看到當前環境

kubectl config view查看所有配置

0

我有兩個解決方案爲您提供:

  1. [首選]配置您的kubectl(即〜/ .kube/config)文件。在kubectl與你的羣集一起工作後,python客戶端應該自動與load_kube_config一起工作。看到這裏配置kubectl:https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/

  2. 你可以直接配置python客戶端。對於配置的完整列表,看看:https://github.com/kubernetes-client/python-base/blob/8704ce39c241f3f184d01833dcbaf1d1fb14a2dc/configuration.py#L48

您可能需要設置一些爲您的客戶這些配置的連接到您的集羣。舉例來說,如果你沒有任何證書或SSL啓用:

from kubernetes import client, configuration 
def main(): 
    configuration.host = "http://192.168.237.115:8080" 
    configuration.api_key_prefix['authorization'] = "Bearer" 
    configuration..api_key['authorization'] = "YOUR_TOKEN" 
    v1 = client.CoreV1Api() 
    ... 

您可根據需要設置其他配置,如用戶名,API_KEY,等等。這就是爲什麼我認爲,如果你按照第一方案會更容易。