使用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等都會儲存在bucket1
aws s3 mb s3://clusters.kops.tw88go.top
開始使用 kops 建立 K8s
下載 kops
1
2
3curl -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.top1
2KOPS_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.yml1
2
3
4
5
6
7
8
9
10
11
12apiVersion: v1
kind: Pod
metadata:
name: pod-nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 801
kubectl create -f pod_nginx.yml
- 將pod 以 LoadBalancer 方式提供服務輸出以下資訊
1
2kubectl expose pod pod-nginx --type=LoadBalancer
kubectl get svc pod-nginx1
2NAME 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 |