简介

手动在AWS中国区部署K8s可谓是非常煎熬,很多镜像在国内显示404,通过下面的方法可以在5分钟内快速的在AWS中国区配置K8s,太感谢kops-cn的作者了。

安装kops

1
2
3
curl -Lo kops https://github.com/kubernetes/kops/releases/download/1.15.0/kops-linux-amd64
chmod +x ./kops
sudo mv ./kops /usr/local/bin/

下载地址可替换为:https://s3.cn-northwest-1.amazonaws.com.cn/kops-file/fileRepository/kops/1.15.2/linux/amd64/kops

安装kubectl

1
2
3
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.15.10/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

下载地址可替换为:https://s3.cn-northwest-1.amazonaws.com.cn/kops-file/fileRepository/kubernetes-release/release/v1.15.10/bin/linux/amd64/kubectl

确认版本

1
2
kops version
kubectl version

这里会输出:

1
2
3
4
Version 1.15.0 (git-9992b4055)

Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.10", GitCommit:"1bea6c00a7055edef03f1d4bb58b773fa8917f11", GitTreeState:"clean", BuildDate:"2020-02-11T20:13:57Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.10", GitCommit:"1bea6c00a7055edef03f1d4bb58b773fa8917f11", GitTreeState:"clean", BuildDate:"2020-02-11T20:05:26Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}

安装 aws cli 并进行配置

1
2
pip install awscli
aws configure

在AWS管理台

1.在AWS管理台创建一个VPC,并附加他的互联网网关,记录下这里的新创建VPC ID

2.在S3中创建一个新的桶,记录下S3桶的名字

使用kops-cn配置集群

1
2
git clone https://github.com/nwcdlabs/kops-cn
cd kops-cn

编辑 Makefile文件.

Name Description values
TARGET_REGION 选择将集群部署在aws北京或宁夏区域 cn-north-1 or cn-northwest-1
AWS_PROFILE 选择制定其他不同的AWS_PROFILE default
KOPS_STATE_STORE 您需要提供一个S3桶给KOPS存放配置信息 s3://YOUR_S3_BUCKET_NANME
VPCID 选择将您的集群部署在哪个VPC中 vpc-xxxxxxxx
MASTER_COUNT master节点的机器数量 3 (需要为奇数数字,修改为1稳定性低,建议不要修改)
MASTER_SIZE master节点的机器类型 t3.medium
NODE_SIZE 工作节点的机器类型 t3.small
NODE_COUNT 工作节点的机器数量 4
SSH_PUBLIC_KEY 本地ssh公钥的存放路径(或参考这里生成一个新的公钥) ~/.ssh/id_rsa.pub [default]

创建集群

1
2
3
4
make create-cluster
make edit-cluster
# 将 kops-cn/spec-nwcd.yml 中内容贴到spec 下
make update-cluster

验证

1
make validate-cluster

附加

  1. 注意每个节点max-pods数量:

https://github.com/aws/amazon-vpc-cni-k8s/blob/f52ad45/README.md

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI

  1. 使用nwcdlabs提供的container-mirror可以便捷的使用更多的国内404的镜像,非常非常感谢他。(注意使用下面的webhook时,在未收录的镜像仓库中的镜像前要加 direct.to/,更多说明访问: nwcdlabs/container-mirror )
1
2
3
4
# 应用 webhook
kubectl apply -f https://raw.githubusercontent.com/nwcdlabs/container-mirror/master/webhook/mutating-webhook.yaml
# 删除 webhook
kubectl delete -f https://raw.githubusercontent.com/nwcdlabs/container-mirror/master/webhook/mutating-webhook.yaml