二、下载 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
您需要设置如下变量
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
作者介绍:
本文转载自 AWS 技术博客。
原文链接:https://amazonaws-china.com/cn/blogs/china/how-to-build-kubernetes-based-on-ec2-in-aws-china/
评论