2015-12-24 36 views
12

Tôi đã cài đặt CentOS Atomic Host làm hệ điều hành cho kubernetes trên AWS.Kubernetes trên nhà cung cấp đám mây AWS

Mọi thứ hoạt động tốt, nhưng có vẻ như tôi đã bỏ lỡ điều gì đó.

Tôi không định cấu hình nhà cung cấp dịch vụ đám mây và không thể tìm thấy bất kỳ tài liệu nào về điều đó.

Trong câu hỏi này, tôi muốn biết: 1. Nhà cung cấp dịch vụ đám mây nào cung cấp cho kubernetes? 2. Cách cấu hình nhà cung cấp đám mây AWS?

UPD 1: bộ cân bằng tải bên ngoài không hoạt động; Tôi chưa thử nghiệm awsElasticBlockStore, nhưng tôi cũng nghi ngờ nó không hoạt động.

UPD 2: Các chi tiết dịch vụ:

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

Trả lời

6

Tôi không thể nói chuyện với các bit ProjectAtomic, cũng như không phải là KUBERNETES_PROVIDER env-var, vì trải nghiệm của tôi đã được cung cấp với CoreOS. Tôi sẽ nói về những trải nghiệm của tôi và xem điều đó có giúp bạn đào sâu thêm một chút vào thiết lập của bạn hay không.

Quan trọng nhất, điều quan trọng nhất là bộ điều khiển EC2 và máy EC2 của công nhân có đúng số IAM role để cho phép máy thực hiện cuộc gọi AWS thay mặt cho tài khoản của bạn. Điều này bao gồm những thứ như cung cấp ELB và làm việc với EBS Volumes (hoặc đính kèm một EBS Volume cho chính họ, trong trường hợp của nhân viên). Nếu không có điều đó, trải nghiệm cấu hình đám mây của bạn sẽ không đi đến đâu cả. Tôi khá chắc chắn các tải trọng IAM được định nghĩa ở đâu đó ngoài các tệp .go, khó đọc, nhưng đó là liên kết nhanh nhất tôi có thể sử dụng để hiển thị những gì cần thiết.

May mắn thay, câu trả lời cho câu hỏi đó và câu hỏi tôi sắp nói đến, đều được tập trung xung quanh apiservercontroller-manager. Cấu hình của chúng và các bản ghi chúng xuất ra.

Cả hai apiservercontroller-manager có đối số trỏ đến tệp cấu hình đám mây trên đĩa mà đáng tiếc không được ghi lại ở bất kỳ đâu ngoại trừ the source. Đó là lĩnh vực Zone là, theo kinh nghiệm của tôi, tùy chọn (giống như họ nói trong các ý kiến). Tuy nhiên, nó đã được nhìn thấy các KubernetesClusterTag mà dẫn tôi để làm theo lĩnh vực xung quanh trong mã để xem những gì nó làm.

Nếu trải nghiệm của bạn giống như của tôi, bạn sẽ thấy trong nhật ký docker của controller-manager một loạt thông báo lỗi về cách tạo ELB nhưng không thể tìm thấy bất kỳ mạng phụ nào đính kèm; (rằng "bản ghi docker" bit là giả định, tất nhiên, ProjectAtomic cũng sử dụng docker để chạy Kubernetes daemons).

Khi tôi đính kèm một Tag tên KubernetesCluster và thiết lập tất cả các thể hiện của các Tag để cùng một chuỗi (nó có thể là bất cứ điều gì, AFAIK), sau đó các aws_loadbalancer đã có thể tìm ra subnet trong VPC và nó gắn các nút đến ELB và mọi thứ đều tuyệt vời - ngoại trừ phần này chỉ có thể tạo ra Internet đối mặt với ELB, ngay bây giờ. :-(

Chỉ cần cho rõ ràng: các aws.cfg chứa một lĩnh vực tên KubernetesClusterTag cho phép bạn xác định lại các Tag rằng Kubernetes sẽ tìm kiếm; mà không bất kỳ giá trị trong tập tin đó, Kuberenetes sẽ sử dụng Tag tên KubernetesCluster.

tôi hy vọng điều này sẽ giúp bạn và tôi hy vọng nó sẽ giúp những người khác, bởi vì một khi Kubernetes đang gia tăng, đó là hoàn toàn tuyệt vời.

+0

Xin chào Daniel, cảm ơn bạn đã trả lời. Tôi đã tìm thấy vai trò AWS IAM trong [kho lưu trữ kubernetes] (https://github.com/kubernetes/kubernetes/tree/master/cluster/aws/templates/iam). –

+0

về máy chủ nguyên tử, hãy kiểm tra tài liệu này https://docs.openshift.org/latest/install_config/configuring_aws.html#configuring-aws-variables –

2
  1. tính năng gì nhà cung cấp điện toán đám mây cho đến kubernetes?

Một số tính năng mà tôi biết: các external loadbalancer, các persistent volumes.

  1. Cách định cấu hình nhà cung cấp đám mây AWS?

Có một var môi trường được gọi là KUBERNETES_PROVIDER, nhưng có vẻ như các var env chỉ quan trọng khi người ta bắt đầu một cụm k8s. Vì bạn đã nói "mọi thứ hoạt động tốt", tôi đoán bạn không cần bất kỳ cấu hình nào khác để sử dụng các tính năng tôi đã đề cập ở trên.

+0

Cám ơn câu trả lời của bạn. tôi đã thử nghiệm bên ngoài LB và nó không hoạt động. –

+0

bạn làm theo các getti ng bắt đầu hướng dẫn cho aws? https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/aws.md#supported-procedure-get-kube. Vui lòng tham khảo https://github.com/kubernetes/kubernetes/blob/4ca66d2aefa20c27b670b2fa890052daadc05294/docs/design/aws_under_the_hood.md. Nếu việc tạo một dịch vụ với Type = Loadbalancer không tạo ra một loadbalancer bên ngoài trên AWS, nó giống như một lỗi. Kubernetes không có hỗ trợ ELB, như đã đề cập trong tài liệu "dưới mui xe". –

+0

Bạn có thể nói thêm ý bạn là LB không hoạt động không? Nó có hiển thị khi bạn thực thi lệnh sau: 'kubectl lấy svc -o yaml' và xem nó có trả về thuộc tính' hostname' không? Vấn đề là AWS không cung cấp địa chỉ IP ELB, chỉ cần lưu trữ tên. – aronchick

Các vấn đề liên quan