文档章节

在AWS中国区使用kops安装k8s完全指南

侯法超
 侯法超
发布于 04/02 21:15
字数 1193
阅读 67
收藏 4

原文链接:http://blog.geekidentity.com/k8s/kops/install-k8s-with-kops-in-china/ 因为一些众所周知的原因,AWS中国区并没有k8s集群,因此我们需要自己安装k8s。而k8s官方提供了一个工具kops来帮助我们快速地在AWS上创建k8s集群。下面是使用kops在AWS创建集群的详细过程。

安装kops (Binaries)

我们建议使用一台低配服务器作为k8s的管理机,在上面安装kops等管理工具。

从github上下载已经编译好的二进制文件

wget -O kops https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64
chmod +x ./kops
sudo mv ./kops /usr/local/bin/

安装其它依赖

kubectl

kubectl是管理和操作Kubernetes集群的CLI工具。

从kubernetes官方kubectl获取发布版本:

wget -O kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

安装AWS CLI 工具

awscli是用Python写的,安装Python和pip后直接运行下面命令就可以了。

pip install awscli

创建账号

在 1.6.2 版本之前,通过 kops 部署 K8s 集群,需要使用 AWS 的 Route53 来提供 DNS 服务的功能。但从 1.6.2 版本开始,kops 支持部署基于 gossip 的集群,不再依赖 Route53,这让部署操作变得更加简单。

配置AWS 账号,使用该账号为kops创建专用账号:

$ aws configure
AWS Access Key ID [None]: <your-accesskeyID>
AWS Secret Access Key [None]: <your-secretAccessKey>
Default region name [None]: cn-north-1
Default output format [None]: json

为了使用 kops 部署集群,还需要为 kops 创建一个 IAM 用户kops,并分配相应的权限:

$ aws iam create-group --group-name kops
$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops
$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops
$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops
$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops
$ aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops
$ aws iam create-user --user-name kops
$ aws iam add-user-to-group --user-name kops --group-name kops

kops用户创建密钥:

$ aws iam create-access-key --user-name kops

上面的命令会返回kops用户的AccessKeyIDSecretAccessKey。接着我们就可以更新awscli的配置,让它使用新创建的kops用户的密钥:

$ aws configure
AWS Access Key ID [None]: <accesskeyID-of-kops-user>
AWS Secret Access Key [None]: <secretAccessKey-of-kops-user>
Default region name [None]: cn-north-1
Default output format [None]: json

同时还需要将kops用户的密钥导出到命令行的环境变量:

$ export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
$ export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
$ export AWS_REGION=$(aws configure get region)

最后是生成 SSH 密钥:

$ ssh-keygen

配置 S3

需要注意,为了让 kops 创建基于 gossip 的集群,集群的命名需要使用.k8s.local作为后缀,例如,这里我们将集群命名为cluster.k8s.local

$ export NAME=cluster.k8s.local

接着创建一个 S3 bucket,用户存储集群的数据,例如,这里我们将这个 bucket 命名为cluster.k8s.local-state.ym

$ aws s3api create-bucket --bucket ${NAME}-state-store --create-bucket-configuration LocationConstraint=$AWS_REGION
$ export KOPS_STATE_STORE=s3://cluster.k8s.local-state-store

准备kops ami

我们必须建立自己的AMI,因为AWS中国地区没有官方的kops ami。

创建集群

下面的命令会创建集群的配置文件,并不会真正地创建集群:

注意:kops-1.8.1不支持中国宁夏区,只支持北京区,

$ kops create cluster \

     --name=${NAME} \
     --image=ami-089b06f993df09d53 \
     --zones=cn-north-1a \
     --master-count=1 \
     --master-size="t2.micro" \
     --node-count=1 \
     --node-size="t2.micro"  \
     --vpc=<your vpc id> \
     --subnets=<stringSlice> \
     --networking=calico \
     --ssh-public-key="~/.ssh/id_rsa.pub"

对于网络模型,使用calico,因为在线上都会自己进行网络规划,当使用k8s默认的kubenet时,k8s会修改AWS路由表,这意味着k8s需要有自己的路由表所有需要有自己的子网,如果在生产环境已经做好了网络规划,使用指定subnet,k8s网络将无法正常运行。

在创建集群之前,可以检查集群的配置文件是否正确:

$ kops edit cluster ${NAME}

在AWS上我们通常使用自己的密钥连接服务器  

...
spec:
  sshKeyName: <your ssh key name>
...

因为一些网站被墙,因此建议使用代理搭建集群。

...
spec:
  egressProxy:
    httpProxy:
      host: http-proxy
      port: port
    excludes: amazonaws.com.cn,amazonaws.cn,aliyun.cn,aliyuncs.com

...

还可以指定docker版本

...
spec:
    docker:
        logDriver: json-file
        version: 17.03.2-ce
...

如果确认没问题,就可以使用下面的命令创建集群:

$ kops update cluster ${NAME} --yes

​ 创建集群之后,需要一段时间等待集群的初始化,等待集群起来之后,可以验证集群的状况:

$ kops validate cluster

  前面已经安装好了kubectl工具,这里也可以使用kubectl检查集群状况:

$ kubectl get nodes

销毁集群

  在销毁集群之前,需要先确认一下 kops 会删除哪些资源:

$ kops delete cluster --name ${NAME}

  如果确认没问题,就可以真正删除集群:

$ kops delete cluster --name ${NAME} --yes

参考资料

  1. kops install
  2. How to use kops in AWS China Region
  3. 使用 kops 在 AWS 部署 Kubernetes 集群

© 著作权归作者所有

共有 人打赏支持
侯法超
粉丝 152
博文 57
码字总数 105341
作品 0
大兴
程序员
私信 提问
Google Kubernetes Engine(GKE)使用初探

概述 Google 的 k8s 在 2017 年已经从容器编排领域的竞争中取得主导地位,从 Docker 之前的一度排挤到最终完全拥抱 k8s,显然 k8s 已经成了目前业界的标准。 但是到目前为止能提供 k8s 完全托...

作者: Qianghaohao
04/15
0
0
AWS EC2 上安装 Kubernetes 的示例

学习下 Kubernetes - 生产级别的容器编排系统 官网:https://kubernetes.io/zh/ Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统。 Kubernetes 特性: 自动包装。根据资源需...

专职跑龙套
11/14
0
0
Kubernetes :Launcher 基于 kubeadm 的部署工具

支持的集群类型 单主机集群 可增删主节点的高可用集群 可增删主节点的高可用集群 用途:建议用户在生产环境中使用 功能:高可用的Etcd集群;支持至少2个Master节点;支持高可用的Vespace存储...

店家小二
昨天
0
0
原生加速中国区Kubernetes安装

概述 Kubernetes是一个强大的容器编排工具,帮助用户在可伸缩性系统上可靠部署和运行容器化应用。在容器领域内,K8s已毋庸置疑成为了容器编排和管理的社区标准,连Docker官方都已宣布支持K8s...

RancherLabs
2017/10/24
0
0
如何开始Kubernetes第一步

摘要:从Hello Minikube到Kubernetes,再到示例微服务应用程序,本文围绕如何学习谷歌的容器编排工具。 每一次创新都带来新的问题。容器使其能够在方便的、可移植的方式中打包和运行应用程序...

xiaoli110
2017/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
11
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部