您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
AWS中国 Kubernetes 搭建指南
 
作者: Cliven_ken
   次浏览      
 2020-3-9
 
编辑推荐:
本文向大家介绍Kops-cn,步骤3 修改Makefile,调整负载均衡器,登录K8s集群中的节点,希望对您的学习有所帮助。
本文来自于csdn,由火龙果软件Delores编辑、推荐。

1. 准备

1.1 网络

创建弹性IP用于K8S网络统一的出口

创建VPC

公网用于堡垒机、VPN服务器,私有网络用于部署K8S服务集群

设置一些必要的参数,此处需要注意设置刚才分配得到的NAT IP。

创建完成之后注意要给VPC上打上标签让 Kubernetes能够识别和管理到这些VPC

VPC需要打上的标有

然后记录下该VPC的ID

vpc-0761a396fcb3a9ddd

接下来到 子网页面,创建子网:vpc选择刚才创建的VPC、选择一个子网地址段,注意选择一个可选区。

用相同的方式创建3个这样的子网,注意:每个子网必须要在不同的可用区中(保持高可用)

子网创建完成之后同样的需要为子网都打上标签这样的才能让Kubernetes识别和管理到。除了上面提及的那两个标签之外还需增加两种类型的标签,这两种类型的标签针对于公有子网和私有子网设置。

因此我们为刚才创建的公有子网增加上KubernetesCluster、kubernetes.io/cluster/cluster.unisign.k8s.local和kubernetes.io/role/elb的标签。

为三个私有子网都增加上KubernetesCluster、kubernetes.io/cluster/cluster.unisign.k8s.local和kubernetes.io/role/internal-elb的标签。

创建完成后记录下这三个私有子网的ID,在Kops配置中将使用到

subnet-0efb59b551dd47dc2

subnet-0a4fa7de20bf500ef

subnet-0ba68ae43a6d71da0

1.2 存储桶

创建一个S3,这个存储桶用于放置K8s的配置信息。

保持默认设置直接创建就可以

创建完成后记录下该桶的名称(k8s-storage)就可以。

1.3 密钥

创建一个用于登录aws cli的AK、SK

我的安全凭证

创建访问密钥

记录下AK和SK在使用KOPS时需要使用到

创建一个K8S集群登录使用的专用密钥对

到EC2页面 的网络与安全 下的 密钥对

输入密钥对名称,创建密钥对

创建完成后会自动下载密钥对,请妥善保管该pem文件,一会将会用到。

1.4 堡垒机

到EC2下创建一个实例 Amazon Linux 2 AMI (HVM), SSD Volume Type

注意配置一下,分配网络为刚才创建的VPC和公有子网,并且分配公有IP

创建完成之后使用登录到这台堡垒机上,接下来需要上传刚才得到的pem密钥对文件。

将K8sSSH.pem移动到/home/ec2-user/.ssh目录下,然后生成公钥

chmod 600 ~/.ssh/K8sSSH.pem
ssh-keygen -f ~/.ssh/K8sSSH.pem
-y > ~/.ssh/K8sSSH.pub
chmod 600 ~/.ssh/K8sSSH.pub
chmod 400 ~/.ssh/K8sSSH.pem

注意:在登录K8s集群中的节点时,还需要将~/.ssh/K8sSSH.pem 权限改为 400,否则会引起权限错误而登录不了的问题。

配置AWS Cli,使用刚才得到的AK和SK,填入集群所在的区域(宁夏就是cn-northwest-1)

aws configure

Default output format 保持默认,可设置为json或者 table

到这里准备的操作基本完成

2. Kops-cn

按照 Kops-cn README 步骤: 1、2、3 操作

2.1 步骤3 修改Makefile

KOPS_STATE_STORE 此处放置 s3:// + 存储桶的名称。例如:s3://k8s-storage

TARGET_REGION 就是部署的区域宁夏就是cn-northwest-1

CUSTOM_CLUSTER_NAME 就是集群的名称,格式为 cluster.名字.k8s.local 如果不按照这种格式设置会导致 Route53 host not found 的错误哦

为了将K8s部署到刚才创建的私有网络中,需要调整一些配置,重新编辑Makefile文件。

设置TARGET_REGION可用区

设置KOPS_STATE_STORE s3存储

设置VPCID VPC ID

设置SSH_PUBLIC_KEY密钥,这个就是刚才生成 ~/.ssh/K8sSSH.pub

增加变量SUBNET_IDS 用于记录私有子网的ID,这个变量就放刚才得到的三个子网的ID,用“,”隔开。

增加变量CUSTOM_CLUSTER_NAME用于自定义集群名称。

修改.PHONY: create-cluster,在指令的最后增加上下面几个参数

--utility-subnets=$(SUBNET_IDS) \
--api-loadbalancer-type=internal \
--subnets=$(SUBNET_IDS) \
--topology=private

最终的配置文件如下:

TARGET_REGION ?= cn-northwest-1
AWS_PROFILE ?= default
KOPS_STATE_STORE ?= s3://k8s-storage
VPCID ?= vpc-0761a396fcb3a9ddd
MASTER_COUNT ?= 3
MASTER_SIZE ?= m4.large
NODE_SIZE ?= c5.large
NODE_COUNT ?= 2
SSH_PUBLIC_KEY ?= ~/.ssh/K8sSSH.pub
KUBERNETES_VERSION ?= v1.13.10
KOPS_VERSION ?= 1.13.0
SUBNET_IDS ?= subnet-0efb59b551dd47dc2,
subnet-0a4fa7de20bf500ef,subnet-0ba68ae43a6d71da0
CUSTOM_CLUSTER_NAME ?= cluster.unisign.k8s.local
# 省略...
.PHONY: create-cluster
create-cluster:
@KOPS_STATE_STORE=$(KOPS_STATE_STORE) \
AWS_PROFILE=$(AWS_PROFILE) \
AWS_REGION=$(AWS_REGION) \
AWS_DEFAULT_REGION=$(AWS_DEFAULT_REGION) \
kops create cluster \
--cloud=aws \
--name=$(CLUSTER_NAME) \
--image=$(AMI) \
--zones=$(ZONES) \
--master-count=$(MASTER_COUNT) \
--master-size=$(MASTER_SIZE) \
--node-count=$(NODE_COUNT) \
--node-size=$(NODE_SIZE) \
--vpc=$(VPCID) \
--kubernetes-version=
$(KUBERNETES_VERSION_URI) \
--networking=amazon-vpc-routed-eni \
--ssh-public-key=$(SSH_PUBLIC_KEY) \
--utility-subnets=$(SUBNET_IDS) \
--api-loadbalancer-type=internal \
--subnets=$(SUBNET_IDS) \
--topology=private

继续按照Kops-cn README 步骤 4、5、6操作

等待集群配置创建完成

2.2 调整负载均衡器

注意: 使用kops启动的kubernetes的apiserver 是运行在 443端口上,而不是6443

由于中国区 80 和 433 端口的使用是需要备案的,所以此处我们需要调整负载均衡端口到非433,否则验证集群会失败

到EC2页面选择 负载均衡器,找到名字为api-cluster-unisign**的负载均衡器

编辑负载均衡的端口

将 负载均衡器端口由443改为8443

在描述中点击安全组的 组名称

选择 api-elb.cluster.** 然后在编辑入站规则

由 HTTPS改为 自定义TCP的8443端口

接下来回到堡垒机上,编辑kubectl 的配置文件

vi ~/.kube/config

修改啊clusters.cluster.server,在末尾加上:8443

验证集群有效性

make validate-cluster

可以看到集群已经正常运行。

3. 登录K8s集群中的节点

由于K8s集群部署到VPC中的私有网络,没有公网IP,所以我们只能通过在VPC中的公有子网中的服务器间接的连接到K8s集群服务器。

因此我们继续使用上面创建的堡垒机进行操作

从EC2控制台获取到某个K8s集群节点的实例私有子网IP,推荐选择Master节点

使用公钥SSH登录到节点上

ssh -i ~/.ssh/K8sSSH.pem admin@10.0.201.12

如果提示无权限那么请设置私钥使用权限chmod 400 ~/.ssh/K8sSSH.pem

可以看到登录已经成功:

Kops-cn 所使用的镜像是基于debian的,登录的用户不是ec2-user而是admin

4. 调整集群中的节点数量

make edit-ig-nodes

Kops使用Autoscale组的方式来创建集群,所以说这里编辑的是工作节点的弹性伸缩设置。

如果只是调整基础数量基础节点的数量,那么调整 spec.minSize就可以

此处我们将2调整为3,maxSize大于等于minSize,所以也调整maxSize为3。

编辑好之后保存,然后更新集群

make update-cluster

从控制台上可以看到已经有一个实例在启动

过一会之后我们验证集群的有效

make validate-cluster

在初始化完成之后集群正常启动

n. F&Q

集群没有启动完成就验证

在修改了负载均衡器和安全组之后使用make validate-cluster出现

unexpected error during validation:
error listing nodes: Get
https://internal-api-cluster-unisign
-k8s-l-1befqc-1231872735.cn-northwest-1.elb.amazonaws.com.cn:8443/api/v1/nodes:
dial tcp: lookup internal-api-cluster
-unisign-k8s-l-1befqc-1231872735.cn
-northwest-1.elb.amazonaws.com.cn on
10.0.0.2:53: no such host
make: *** [validate-cluster] Error 1

或者是

unexpected error during validation:
error listing nodes: Get https://internal
-api-cluster-unisign-k8s-l-1befqc
-1231872735.cn-northwest-1.
elb.amazonaws.com.cn
:8443/api/v1/nodes: EOF
make: *** [validate-cluster] Error 1

的错误,这是因为控制节点(master)还没有完成启动,所以请耐心等候。

 
   
次浏览       
相关文章

DevOps转型融入到企业文化
DevOps 能力模型、演进及案例剖析
基于 DevOps 理念的私有 PaaS 平台实践
微软开发团队的DevOps实践启示
相关文档

DevOps驱动应用运维变革与创新
运维管理规划
如何实现企业应用部署自动化
运维自动化实践之路
相关课程

自动化运维工具(基于DevOps)
互联网运维与DevOps
MySQL性能优化及运维培训
IT系统运维管理