2017-06-22 2 views
0

So habe ich gerade erst begonnen mit Kubernetes API-Server und ich versuchte, dieses Beispiel:Kubernetes API-Server

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() 

Das funktionierte aber es kehrte die Schoten, die auf meinem lokalen minikube sind, möchte ich die Schoten bekommen, die sind auf dem Kubernetes Server hier: http://192.168.237.115:8080 Wie mache ich das?

Wenn ich kubectl config view tun, bekomme ich diese:

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 

Ich weiß, dass dies für den lokalen Cluster I aufgebaut. Ich möchte wissen, wie dies zu ändern, um api Anfragen an Kubernetes Server auf http://192.168.237.115:8080

Antwort

0

Können Sie mir die Datei ~/.kube/config

Wenn Sie aktualisieren, um den API-Server darin, die Python-Modul kubernetes automatisch abholen das zu machen neuer API-Server, den du nominiert hast.

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

Es gibt noch weitere Änderungen in ~/.kube/config auch, würden Sie besser direkt die Config vom entfernten Kubernetes Server.

Nach erfolgreich mit Remote Kubernetes API-Server Config, sollten Sie sich gut kubectl auszuführen und die Einsätze, deamons usw.

Dann sollten Sie sich gut laufen mit Python Kubernetes SDK

+0

So ist es das, was ich bekomme, wenn ich 'kubectl Config-Ansicht tun': 'APIVERSION: v1 Cluster: - Cluster: Zertifikat-Behörde: /home/piyush/.minikube/ca.crt Server: https: //192.168.99.100:8443 Name: minikube Kontexte: - Kontext: Cluster: minikube Benutzer: minikube Name: minikube aktuellen Kontext: minikube Art: Config Vorlieben: {} Benutzer: - Name: Minikube Benutzer: Client-Zertifikat: /home/piyush/.minikube/apiserver.crt client-key: /home/piyush/.minikube/apiserver.key ' –

+0

Ich weiß, dass ich dies ändern muss, um Cluster hinzuzufügen. Aber welche Werte gebe ich der Zertifizierungsstelle? –

+0

Können Sie zuerst die Konfigurationsdatei in Ihrer ursprünglichen Frage aktualisieren? – BMW

2

config.load_kube_config() nimmt zu erhalten context als Parameter. Wenn None (der Standardwert) übergeben wird, wird der aktuelle Kontext verwendet. Ihr aktueller Kontext ist wahrscheinlich Ihr Minikubus.

Siehe hier: https://github.com/kubernetes-incubator/client-python/blob/436351b027df2673869ee00e0ff5589e6b3e2b7d/kubernetes/config/kube_config.py#L283

config.load_kube_config(context='some context')

Wenn Sie mit Kubernetes Kontexten nicht vertraut sind, Kubernetes speichert Ihre Konfiguration unter ~/.kube/config (Standardverzeichnis). Darin finden Sie die Kontextdefinition für jeden Cluster, auf den Sie zugreifen können. Ein Feld namens current-context definiert Ihren aktuellen Kontext.

Sie können die folgenden Befehle eingeben:

kubectl config current-context den aktuellen Kontext zu sehen

kubectl config view alle die Konfiguration für Sie

0

Ich habe zwei Lösung zu lesen:

  1. [ bevorzugt] Konfigurieren Sie Ihre kubectl (zB ~/.kube/config) Datei. Nachdem kubectl mit Ihrem Cluster arbeitet, sollte der Python-Client automatisch mit load_kube_config arbeiten. Siehe hier zum Konfigurieren von kubectl: https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/

  2. Sie können den Python-Client direkt konfigurieren.Eine vollständige Liste von Konfigurationen, Blick auf: https://github.com/kubernetes-client/python-base/blob/8704ce39c241f3f184d01833dcbaf1d1fb14a2dc/configuration.py#L48

Sie müssen möglicherweise einige dieser Konfiguration für Ihren Client auf dem Cluster zu verbinden. Zum Beispiel, wenn Sie aktivierte kein Zertifikat oder SSL hat:

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() 
    ... 

Sie müssen möglicherweise andere Konfigurationen wie Benutzername setzen, api_key usw. Aus diesem Grunde denke ich, wenn Sie erste Lösung folgen wäre es einfacher, .

Verwandte Themen