编辑推荐: |
本文向大家介绍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)
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 的配置文件
修改啊clusters.cluster.server,在末尾加上:8443
验证集群有效性
可以看到集群已经正常运行。
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. 调整集群中的节点数量
Kops使用Autoscale组的方式来创建集群,所以说这里编辑的是工作节点的弹性伸缩设置。
如果只是调整基础数量基础节点的数量,那么调整 spec.minSize就可以
此处我们将2调整为3,maxSize大于等于minSize,所以也调整maxSize为3。
编辑好之后保存,然后更新集群
从控制台上可以看到已经有一个实例在启动
过一会之后我们验证集群的有效
在初始化完成之后集群正常启动
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)还没有完成启动,所以请耐心等候。
|