2015-12-24 23 views
12

Ho installato CentOS Atomic Host come sistema operativo per kubernetes su AWS.Kubernetes su cloud provider AWS

Tutto funziona, ma sembra che mi sia sfuggito qualcosa.

Non ho configurato il provider cloud e non riesco a trovare alcuna documentazione al riguardo.

In questa domanda desidero sapere: 1. Quali caratteristiche offre il provider cloud a kubernetes? 2. Come configurare il provider cloud AWS?

UPD 1: il bilanciamento del carico esterno non funziona; Non ho ancora provato awsElasticBlockStore, ma ho anche il sospetto che non funzioni.

UPD 2: dettagli servizio:

$ kubectl get svc nginx-service-aws-lb -o yaml 
apiVersion: v1 
kind: Service 
metadata: 
    creationTimestamp: 2016-01-02T09:51:40Z 
    name: nginx-service-aws-lb 
    namespace: default 
    resourceVersion: "74153" 
    selfLink: /api/v1/namespaces/default/services/nginx-service-aws-lb 
    uid: 6c28b718-b136-11e5-9bda-06c2feb29b0d 
spec: 
    clusterIP: 10.254.172.185 
    ports: 
    - name: http-proxy-protocol 
    nodePort: 31385 
    port: 8080 
    protocol: TCP 
    targetPort: 8080 
    - name: https-proxy-protocol 
    nodePort: 31370 
    port: 8443 
    protocol: TCP 
    targetPort: 8443 
    selector: 
    app: nginx 
    sessionAffinity: None 
    type: LoadBalancer 
status: 
    loadBalancer: {} 

risposta

6

Non riesco a parlare ai bit ProjectAtomic, né allo KUBERNETES_PROVIDER env-var, poiché la mia esperienza è stata con il provisioner CoreOS. Parlerò delle mie esperienze e vedrò se questo ti aiuta a scavare un po 'di più nel tuo setup.

Per prima cosa, è assolutamente essenziale che il controller EC2 e le macchine EC2 dell'operatore abbiano il corretto IAM role che consentirà alle macchine di effettuare chiamate AWS per conto del proprio account. Ciò include cose come la fornitura di ELB e il funzionamento con EBS Volumes (o il collegamento di un volume EBS a se stessi, nel caso dell'operatore). Senza quello, la tua esperienza di cloud-config non andrà da nessuna parte. Sono abbastanza sicuro che i payload IAM siano definiti da qualche altra parte rispetto a quei file .go, che sono difficili da leggere, ma questo è il collegamento più veloce che mi è stato utile per mostrare cosa è necessario.

Fortunatamente, la risposta a questa domanda e quella di cui sto per parlare sono entrambe incentrate sullo apiserver e sullo controller-manager. La configurazione di loro e dei log che emettono.

Sia lo sia lo controller-manager hanno un argomento che punta a un file di configurazione cloud su disco che purtroppo non è documentato ovunque tranne che per the source. Il campo Zone è, secondo la mia esperienza, opzionale (proprio come si dice nei commenti). Tuttavia, stava vedendo il KubernetesClusterTag che mi ha portato a seguire quel campo nel codice per vedere cosa fa.

Se la tua esperienza è simile alla mia, nei registri della finestra mobile dello controller-manager vengono visualizzati alcuni messaggi di errore su come è stato creato l'ELB, ma non è stato possibile trovare alcuna sottorete da allegare ad esso; (che il bit "log del docker" presume, ovviamente, che ProjectAtomic usi anche la finestra mobile per eseguire i daemon di Kubernetes).

Una volta ho attaccato un Tag chiamato KubernetesCluster e impostare ogni istanza della Tag per la stessa stringa (può essere qualsiasi cosa, per quanto ne so), quindi il aws_loadbalancer è stato in grado di trovare la sottorete nella VPC e attaccato i nodi per la ELB e tutto era bello - tranne per la parte su di esso può creare solo Internet di fronte ELB, in questo momento. :-(

Solo per chiarezza: il aws.cfg contiene un campo denominato KubernetesClusterTag che permette di ridefinire la Tag che kubernetes cercherà; senza alcun valore in quel file, Kuberenetes utilizzerà il nome TagKubernetesCluster.

Spero che questo ti aiuta e spero che aiuta gli altri, perché una volta kubernetes è su, è assolutamente incredibile.

+0

Ciao Daniel, grazie per la tua risposta. Ho trovato i ruoli AWAM IAM in [repository kubernetes] (https://github.com/kubernetes/kubernetes/tree/master/cluster/aws/templates/iam). –

+0

per l'host atomico, controlla questo documento https://docs.openshift.org/latest/install_config/configuring_aws.html#configuring-aws-variables –

2
  1. Quali caratteristiche fornitore di cloud dà a kubernetes?

Alcune caratteristiche che conosco: la external loadbalancer, il persistent volumes.

  1. Come configurare il provider cloud AWS?

C'è un ambiente var chiamato KUBERNETES_PROVIDER, ma sembra che l'env var importa solo quando la gente inizia un cluster K8S. Dal momento che hai detto "tutto funziona correttamente", I indovina non hai bisogno di ulteriori configurazioni per utilizzare le funzionalità che ho menzionato sopra.

+0

Grazie per la risposta. ho provato LB esterno e non funziona. –

+0

è stata eseguita la Getti ng ha iniziato le guide per aws? https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/aws.md#supported-procedure-get-kube. Si prega di fare riferimento anche a https://github.com/kubernetes/kubernetes/blob/4ca66d2aefa20c27b670b2fa890052daadc05294/docs/design/aws_under_the_hood.md. Se la creazione di un servizio con Type = Loadbalancer non crea un loadbalancer esterno su AWS, sembra un bug. Kubernetes ha il supporto ELB, come menzionato nel doc "under the hood". –

+0

Puoi dire di più su cosa intendi che il LB non funziona? Si presenta quando si esegue il seguente comando: 'kubectl get svc -o yaml' e vediamo se restituisce un attributo' hostname'? Il problema è che AWS non fornisce indirizzi IP ELB, ma solo nomi host. – aronchick