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

2020 年 1 月 02 日

如何在 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[](https://storage.googleapis.com/kubernetes-release/release/stable.txt)/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


您需要设置如下变量


NameDescriptionvalues
TARGET_REGION选择将集群部署在aws北京或宁夏区域cn-north-1 or cn-northwest-1
AWS_PROFILE选择制定其他不同的AWS_PROFILEdefault
KOPS_STATE_STORE您需要提供一个S3桶给KOPS存放配置信息s3://YOUR_S3_BUCKET_NANME
VPCID选择将您的集群部署在哪个VPC中vpc-xxxxxxxx
MASTER_COUNTmaster节点的机器数量3 (建议不要修改)
MASTER_SIZEmaster节点的机器类型例如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的AMIAMI 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/)



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


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



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



四、删除集群


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_



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


作者介绍:


!



### [](https://amazonaws-china.com/cn/blogs/china/tag/%E8%83%A1%E6%AD%A3%E5%85%89/)
AWS解决方案架构师,15年IT行业经验,目前负责基于AWS云计算方案架构的咨询和设计
复制代码


本文转载自 AWS 技术博客。


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


2020 年 1 月 02 日 15:31119

评论

发布
暂无评论
发现更多内容

Spring 源码学习 02:关于 Spring IoC 和 Bean 的概念

程序员小航

spring 源码 源码分析 ioc

前嗅教你大数据:常见几种编码介绍

前嗅大数据

大数据 编码 编码指南 前嗅大数据

5分钟学会6个阿里内部编程的方法

Java架构师迁哥

根治可扩展、高可用、高性能“神器”:SpringCloud+Nginx高并发编程手册

Java架构追梦

Java nginx 架构 面试 微服务

二分发代码模板

小兵

阿里云在应用扩缩容下遇到的挑战与选型思考

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生

Spock单元测试框架实战指南四 - 异常测试

Java老k

单元测试 spock

聊聊销售背后的策略

吴晨曦

创业 销售管理

监控之美——监控系统选型分析及误区探讨

华章IT

运维 云原生 监控 Prometheus

anyRTC 11月SDK更新

anyRTC开发者

flutter uni-app WebRTC RTC sdk

【薪火计划】06 - 你推崇的领导方式是怎么样的?

brave heart

管理

《华为数据之道》读书笔记:第 6 章 面向“自助消费”的数据服务建设

方志

数据中台 数据仓库 数字化转型 数据治理

《华为数据之道》读书笔记:第 7章 打造“数字孪生”的数据全量感知能力

方志

数据中台 数字化转型

《华为数据之道》读书笔记:第 8 章 打造“清洁数据”的质量综合管理能力

方志

数字化转型 数据质量管理

苹果开始告别英特尔

罗燕珊

macOS Big Sur 芯片 苹果 MacBook 英特尔

磁盘到底是怎样工作的?一文理解硬盘结构

Guanngxu

操作系统

区块链政务系统开发解决方案

t13823115967

区块链+ 区块链开发落地 政务系统开发解决方案

区块链供应链金融落地解决方案,数据上链存储

WX13823153201

区块链供应链金融落地

不要再满世界找linux命令了,常用的我都给你整理了

linux亦有归途

Linux 程序人生 C/C++ 后端开发 linux命令

今年最火的 Golang 云原生开源项目,可能就是它了!

孙健波

Kubernetes k8s OAM KubeVela CloudNative

40 张图带你搞懂 TCP 和 UDP

云流

编程 程序员 前端 后端 网络

微博和B站屏蔽马保国相关信息:自媒体蹭热度要适可而止

石头IT视角

架构师训练营第一期-第十周课后作业

卖猪肉的大叔

极客大学架构师训练营

1. 揭秘Spring类型转换 - 框架设计的基石

YourBatman

Spring Framework 类型转换 Converter

shell脚本的使用该熟练起来了,你说呢?(篇二)

良知犹存

Shell

使用 Go 实现 Async/Await 模式

Roc

go golang channel goroutines Async

三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境!!

冰河

Docker 云原生 k8s

区块链开发落地,联盟链系统平台搭建

t13823115967

区块链 区块链开发落地 联盟链系统平台搭建

现在Php、Java、Python横行霸道的市场,C++程序员们都在干什么呢?

ShenDu_Linux

c++ 程序员 编程语言 C语言 软件工程师

阿里内部“高并发通关秘籍”曝光,看完带给你独一无二的认知!

比伯

Java 编程 架构 面试 计算机

架构师训练营第一期-第十周学习总结

卖猪肉的大叔

极客大学架构师训练营

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