如何在 AWS 中国区上基于 EC 2 搭建 Kubernetes(二)

阅读数:4 2020 年 1 月 2 日 15:31

如何在 AWS 中国区上基于 EC 2搭建 Kubernetes(二)

二、下载 kops-cn 项目及相关工具

2.1 安装 kops and kubectl(可以在 Mac 或 EC2 上)

2.1.1 安装 kops

Linux:

curl -Lo kops curl -Lo kops https://github.com/kubernetes/kops/releases/download/1.14.0/kops-linux-amd64

chmod +x ./kops

sudo mv ./kops /usr/local/bin/

Mac:

curl -Lo kops curl -Lo kops https://github.com/kubernetes/kops/releases/download/1.14.0/kops-linux-amd6chmod +x ./kops

sudo mv ./kops /usr/local/bin/

验证:

kops version

2.1.2 安装 kubectl

Linux:

curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.17.0 /bin/linux/amd64/kubectl /bin/linux/amd64/kubectl)chmod +x ./kubectlsudo mv ./kubectl /usr/local/bin/kubectl

MacOS:

curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.17.0chmod +x ./kubectlsudo mv ./kubectl /usr/local/bin/kubectl

验证:

kubectl version

2.2 下载 kops-cn 项目到本地

curl https://github.com/nwcdlabs/kops-cn/archive/master.zip -L -o kops-cn.zip

unzip kops-cn

cd kops-cn-master

三、创建 k8s 集群

3.1 编辑 Makefile 文件

vi 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 (建议不要修改)
MASTER_SIZE master 节点的机器类型 例如 m5.large
NODE_SIZE 工作节点的机器类型 例如 c5.large
NODE_COUNT 工作节点的机器数量 例如 3
SSH_PUBLIC_KEY 本地 ssh 公钥的存放路径 ~/.ssh/id_rsa.pub [default]
KUBERNETES_VERSION 指定 kubernetes 版本 1.14.6
KOPS_VERSION 指定 kops 版本 1.14.0
AMI 指定 Master 和 Node 的 AMI AMI ID(注意 AMI ID 和 Region 有关)

3.2 创建集群文件

make create-cluster (有可能会因为网络原因而失败,多重试几次)

3.3 编辑集群文件

make edit-cluster

将 以下内容贴到 spec 下并保存退出

assets:

containerRegistry: 937788672844.dkr.ecr.cn-north-1.amazonaws.com.cn

fileRepository: https://s3.cn-north-1.amazonaws.com.cn/kops-bjs/fileRepository/

docker:

logDriver: ""

registryMirrors:

- https://registry.docker-cn.com

如何在 AWS 中国区上基于 EC 2搭建 Kubernetes(二)

如果要修改集群名,请不要修改后缀 k8s.local

如果要自定义子网 CIDR,可以修改 subnets 的 CIDR,子网名称请不要修改

如何在 AWS 中国区上基于 EC 2搭建 Kubernetes(二)

3.4 更新和创建集群

make update-cluster (有可能会因为网络原因而失败,多重试几次)

3.5 验证集群

make validate-cluster

或者

export KOPS_STATE_STORE=s3://_YOUR_S3_BUCKET_NANME_export AWS_REGION=_cn-north-1_ or _cn-northwest-1_kops validate cluster

如何在 AWS 中国区上基于 EC 2搭建 Kubernetes(二)

四、删除集群

make delete-cluster

五、常见问题

5.1 完成 kopscn 的步骤后,kops validate cluster 不能使用,提示需要 KOPS_STATE_STORE 参数

这是因为参数缺失,执行以下命令后就可以正常使用:

export KOPS_STATE_STORE=s3://_YOUR_S3_BUCKET_NANME_export AWS_REGION= cn-north-1 _or_ cn-northwest-1

5.2 如何在其他的机器上查看和维护环境?

首先,按照上面文档的操作装步骤,在机器上完成配置 AK/SK,配置 SSH ID,安装 awscli、kubectl、kops(不需要下载 kops-cn)。首先执行以下命令配置参数:

export KOPS_STATE_STORE=s3://_YOUR_S3_BUCKET_NANME_export AWS_REGION= cn-north-1 _or_ cn-northwest-1kops export kubecfg nlp-test.k8s.local

然后可以正常使用 kops 管理集群

5.3 配置文件如何同步?

集群的配置文件存放在之前指定的 S3 目录下,可以使用 kops 相关命令进行修改。

修改 cluster 信息(k8s.local 这个后缀不难修改):

kops edit cluster --name=cluster.zhy.k8s.local

修改 master 实例组:

kops edit ig --name=cluster.zhy.k8s.local master-cn-northwest-1a

修改 node 实例组:

kops edit ig --name=cluster.zhy.k8s.local nodes

5.4 如何修改 AutoScaling 参数?

执行以下命令修改实例组信息:

kops edit ig --name=cluster.zhy.k8s.local nodes

修改实例组的实例类型和容量,比如:

machineType: c5.large

maxSize: 5

minSize: 1

保存修改后执行以下命令:

kops update cluster cluster.zhy.k8s.local --yes

5.5 如何增加新的 AutoScaling 组?

可以执行以下命令创建新的实例组(可能会失败,多试几次):

kops create ig --name=cluster.zhy.k8s.local nodes2 --role node

填写实例组配置,比如:

apiVersion: kops/v1alpha2

kind: InstanceGroup

metadata:

creationTimestamp: 2019-12-16T15:01:45Z

generation: 1

labels:

kops.k8s.io/cluster: cluster.k8s.local

name: nodes2

spec:

image: ami-0d8487330873f710c

machineType: m5.large

maxSize: 5

minSize: 1

nodeLabels:

kops.k8s.io/instancegroup: nodes

role: Node

subnets:

- cn-northwest-1a

- cn-northwest-1b

- cn-northwest-1c

保存退出后,执行以下命令更新集群:

kops update cluster --name=cluster.zhy.k8s.local --yes

5.6 如何卸载指定的 node 节点?

首先,可以通过 kubectl 列出所有节点:

kubectl get nodes

然后,通过 drain 命令卸载指定的节点:

kubectl drain <node name>

5.7 如何在现有的子网中搭建 k8s?

首先编辑 Makefile 文件

vi Makefile

再在 creat-cluster 中添加如下信息:

--ssh-public-key=$(SSH_PUBLIC_KEY) \

--zones=_zone name, zone name, zone name_ \

--subnets=_ 子网 ID, 子网 ID, 子网 ID_

如何在 AWS 中国区上基于 EC 2搭建 Kubernetes(二)

5.8 如何 SSH Master 节点和 Node 节点?

默认 Debian AMI ssh 方式为 ssh -i ~/.ssh/id_rsa admin@_IP_

六、参考

https://github.com/nwcdlabs/kops-cn/blob/master/README.md

作者介绍:

!
复制代码
AWS 解决方案架构师,15 年 IT 行业经验,目前负责基于 AWS 云计算方案架构的咨询和设计

本文转载自 AWS 技术博客。

原文链接: https://amazonaws-china.com/cn/blogs/china/how-to-build-kubernetes-based-on-ec2-in-aws-china/

评论

发布