0%

使用kops建立K8s_Cluster_on_AWS

使用kops建立K8s_Cluster_on_AWS

事前準備

  • 需要有一個AWS帳號

  • 使用IAM 建立一個使用者供 aws_cli 使用

  • 需要一個Domain Name
    目前有一個 tw88go.top 由CloudFlare 代管
    之後使用kops.tw88go.top 將此領域轉給 AWS Route53代管

    1
    kops.tw88go.top
  • 使用AWS route53指定Domain Name

    1
    aws route53 create-hosted-zone --name kops.tw88go.top --caller-reference 1

    會有輸出NameServers,如以下資訊

    1
    2
    3
    4
    5
    6
    7
    8
    "DelegationSet": {
    "NameServers": [
    "ns-753.awsdns-30.net",
    "ns-1665.awsdns-16.co.uk",
    "ns-500.awsdns-62.com",
    "ns-1475.awsdns-56.org"
    ]
    },

    將以上4個DNS Domain bind在 CloudFlare,如下圖:

  • 建立一個S3 bucket
    建立S3 bucket主要作用是儲存 K8s Cluster state。
    當建立K8s Cluster 的設定檔,metadata等都會儲存在bucket

    1
    aws s3 mb s3://clusters.kops.tw88go.top

    開始使用 kops 建立 K8s

  • 下載 kops

    1
    2
    3
    curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
    sudo mv kops-linux-amd64 /usr/local/bin/kops
    chmod a+x /usr/local/bin/kops
  • 建立 K8s
    以下指令只是建立K8s設定檔 ,並上傳指定S3 bucket
    指定KOPS_STATE_STORE環境變數,就不必使用 –state=s3://clusters.kops.tw88go.top

    1
    2
    KOPS_STATE_STORE=s3://clusters.kops.tw88go.top
    kops create cluster --name=kops.tw88go.top --zones=ap-northeast-3a --master-size=t2.micro --node-size=t2.micro --node-count=2 --dns-zone=kops.tw88go.top
  • 套用以上建立的設定檔

    1
    kops update cluster --name kops.tw88go.top --yes --admin

小試身手-kubectl

  • 簡單建立1個pod
    pod_nginx.yml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    apiVersion: v1
    kind: Pod
    metadata:
    name: pod-nginx
    labels:
    app: nginx
    spec:
    containers:
    - name: nginx
    image: nginx
    ports:
    - containerPort: 80
    1
    kubectl create -f pod_nginx.yml
  • 將pod 以 LoadBalancer 方式提供服務
    1
    2
    kubectl expose pod pod-nginx --type=LoadBalancer
    kubectl get svc pod-nginx
    輸出以下資訊
    1
    2
    NAME        TYPE           CLUSTER-IP      EXTERNAL-IP                                                                   PORT(S)        AGE
    pod-nginx LoadBalancer 100.67.121.49 a3954a6f5f72848eba9df65e0b6f8842-871043940.ap-northeast-3.elb.amazonaws.com 80:30493/TCP 9m44s
  • test Access EXTERNAL-IP
    1
    curl a3954a6f5f72848eba9df65e0b6f8842-871043940.ap-northeast-3.elb.amazonaws.com

清除 K8s Cluster

1
kops delete cluster --name kops.tw88go.top  --yes

參考資料:

歡迎關注我的其它發布渠道