2015-12-24 30 views
12

Zainstalowałem CentOS Atomic Host jako system operacyjny dla kubernetes na AWS.Kubernetes na chmurze AWS

Wszystko działa dobrze, ale wydaje mi się, że coś przeoczyłem.

Nie skonfigurowałem dostawcy usług w chmurze i nie mogę znaleźć żadnej dokumentacji na ten temat.

W tym pytaniu chcę wiedzieć: 1. Jakie funkcje daje dostawca chmury dla kubernetes? 2. Jak skonfigurować dostawcę chmury AWS?

UPD 1: zewnętrzny moduł równoważenia obciążenia nie działa; Nie testowałem jeszcze awsElasticBlockStore, ale podejrzewam też, że to nie działa.

UPD 2: szczegóły serwisowe:

$ 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: {} 

Odpowiedz

6

Nie mogę rozmawiać z bitami ProjectAtomic, ani z KUBERNETES_PROVIDER env-var, ponieważ moje doświadczenie było z komponentem CoreOS. Porozmawiam o moich doświadczeniach i zobaczę, czy to pomoże ci jeszcze bardziej wkopać się w twoją konfigurację.

Przede wszystkim absolutnie konieczne jest, aby sterownik EC2 i maszyny EC2 dla pracowników posiadały poprawną IAM role, która umożliwi urządzeniom wykonywanie połączeń AWS w imieniu konta. Obejmuje to takie elementy, jak przydzielanie ELB i praca z woluminami EBS (lub przydzielanie woluminu EBS sobie, w przypadku pracownika). Bez tego twoja konfiguracja cloud-config pójdzie donikąd. Jestem pewien, że ładunki IAM są zdefiniowane gdzieś indziej niż te pliki .go, które są trudne do odczytania, ale jest to najszybszy link, który miałem pod ręką, aby pokazać, co jest potrzebne.

Na szczęście odpowiedź na to pytanie i tę, o której zamierzam mówić, koncentrują się wokół apiserver i controller-manager. Konfiguracja ich i logów, które wyprowadzają.

Zarówno apiserver i controller-manager mieć argument wskazujący na plik konfiguracyjny na dysku w chmurze, która niestety nie jest udokumentowany nigdzie z wyjątkiem the source. To pole Zone jest, moim zdaniem, opcjonalne (tak jak mówią w komentarzach). Jednak zobaczyłem KubernetesClusterTag, który skłonił mnie do śledzenia tego pola w kodzie, aby zobaczyć, co robi.

Jeśli Twoje doświadczenie jest podobne do mojego, zobaczysz w dziennikach dokowania z controller-manager kilka komunikatów o błędach dotyczących sposobu utworzenia ELB, ale nie można znaleźć żadnych podsieci do przyłączenia się do niego; (że bit "dzienników dokowania" zakłada oczywiście, że ProjectAtomic używa również okna dokowanego do uruchamiania demonów Kubernetes).

Raz przyłączone Tag nazwie KubernetesCluster i ustawić każdą instancję Tag do tego samego łańcucha (może to być cokolwiek, AFAIK), wówczas aws_loadbalancer był w stanie znaleźć podsieć w VPC i przyłączone węzły do ELB i wszystko było fajne - z wyjątkiem tego, że część z nich może teraz stworzyć tylko Internet skierowane do ELB, teraz. :-(

Tak dla jasności: the aws.cfg zawiera pole o nazwie KubernetesClusterTag który pozwala na przedefiniowaćTag że Kubernetes będzie szukał; bez każda wartość w tym pliku, Kuberenetes użyje nazwy KubernetesClusterTag.

mam nadzieję, że to pomaga i mam nadzieję, że pomaga innym, bo raz Kubernetes to w górę, to absolutnie niesamowite.

+0

Cześć Daniel, dziękuję za odpowiedź. Znalazłem role AWS IAM w repozytorium kubernetes (https://github.com/kubernetes/kubernetes/tree/master/cluster/aws/templates/iam). –

+0

dotyczące hosta atomowego, sprawdź ten dokument https://docs.openshift.org/latest/install_config/configuring_aws.html#configuring -aws-variables –

2
  1. Jakie funkcje chmura dostawca daje kubernetes?

Niektóre cechy, które ja wiedzieć: external loadbalancer, tym persistent volumes.

  1. Jak skonfigurować dostawcę chmury AWS?

Jest var środowisko nazywane KUBERNETES_PROVIDER, ale wydaje się, że env var znaczenie tylko wtedy, gdy ludzie zaczynają się K8S klastra. Ponieważ powiedziałeś "wszystko działa bez zarzutu", I domysłów nie potrzebujesz żadnej dodatkowej konfiguracji do korzystania z funkcji wymienionych powyżej.

+0

Dzięki za odpowiedź. testowałem zewnętrzny LB i to nie działa. –

+0

Czy wykonaj Getti ng zaczął przewodnik po aws? https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/aws.md#supported-procedure-get-kube. Proszę również zapoznać się z https://github.com/kubernetes/kubernetes/blob/4ca66d2aefa20c27b670b2fa890052daadc05294/docs/design/aws_under_the_hood.md. Jeśli tworzenie usługi z Type = Loadbalancer nie tworzy zewnętrznego loadbalancera na AWS, brzmi to jak błąd. Kubernetes ma wsparcie ELB, jak wspomniano w dokumencie "pod maską". –

+0

Czy możesz powiedzieć więcej, co masz na myśli mówiąc, że LB nie działa? Czy pojawia się, gdy wykonasz następujące polecenie: 'kubectl get svc -o yaml' i sprawdź, czy zwraca atrybut' hostname'? Problem polega na tym, że AWS nie podaje adresów IP ELB, tylko nazwy hostów. – aronchick