kops 在 aws 部署 K8S 集群¶
初始化环境¶
安装 kops, kubectl, aws-cli:
关于 kops 与 k8s 的对应版本说明: For example, kops 1.8.0 does not support Kubernetes 1.9.2, but kops 1.9.0 supports Kubernetes 1.9.2 and previous Kubernetes versions.
wget https://github.com/kubernetes/kops/releases/download/1.12.3/kops-linux-amd64 chmod +x ./kops mv ./kops /usr/local/bin/
kubectl
wget https://dl.k8s.io/v1.12.10/kubernetes-client-linux-amd64.tar.gz gzip -d kubernetes-client-linux-amd64.tar.gz chmod +x ./kubectl mv ./kubectl /usr/local/bin/kubectlaws cli tool
pip install awscli
准备 aws 账号
创建 S3 (用于保存 kops stats 文件
配置环境变量:
export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_REGION= export NAME= export KOPS_STATE_STORE= export VPC_NAME= export SUBNET_NAME=
准备 kops 安装依赖二进制文件与校验文件:
这里我使用 nginx 作为 webserver 提供数据下载服务,其中在 aws 上公网 80/443 服务 (即使在安全组策略已经开通的情况下,依然不能正常访问 telnet x.x.x.x 80 未响应, 使用了一个高位端口):
asset ├── download.sh ├── kops │ └── 1.12.3 │ ├── darwin │ │ └── amd64 │ │ ├── kops │ │ └── kops.sha1 │ ├── images │ │ ├── protokube.tar.gz │ │ └── protokube.tar.gz.sha1 │ ├── linux │ │ └── amd64 │ │ ├── kops │ │ ├── kops.sha1 │ │ ├── nodeup │ │ ├── nodeup.sha1 │ │ ├── utils.tar.gz │ │ └── utils.tar.gz.sha1 │ └── windows │ └── amd64 │ ├── kops │ └── kops.sha1 └── kubernetes-release ├── network-plugins │ ├── cni-plugins-amd64-v0.6.0.tgz │ ├── cni-plugins-amd64-v0.6.0.tgz.sha1 │ ├── cni-plugins-amd64-v0.7.5.tgz │ └── cni-plugins-amd64-v0.7.5.tgz.sha1 └── release └── v1.12.9 └── bin └── linux └── amd64 ├── kube-apiserver.docker_tag ├── kube-apiserver.tar ├── kube-apiserver.tar.sha1 ├── kube-controller-manager.docker_tag ├── kube-controller-manager.tar ├── kube-controller-manager.tar.sha1 ├── kube-proxy.docker_tag ├── kube-proxy.tar ├── kube-proxy.tar.sha1 ├── kube-scheduler.docker_tag ├── kube-scheduler.tar ├── kube-scheduler.tar.sha1 ├── kubectl ├── kubectl.sha1 ├── kubelet └── kubelet.sha1
准备镜像仓库::
node: protokube 1.12.3 dd37681076e1 2 weeks ago 295MB k8s.gcr.io/kube-proxy v1.12.8 18d31d4ba9ad 3 months ago 95.7MB k8s.gcr.io/pause-amd64 3.0 99e59f495ffa 3 years ago 747kB master: REPOSITORY TAG IMAGE ID CREATED SIZE protokube 1.12.3 dd37681076e1 2 weeks ago 295MB quay.io/calico/node v3.7.4 84b65b552a8f 7 weeks ago 155MB quay.io/calico/cni v3.7.4 203668d151b2 7 weeks ago 135MB k8s.gcr.io/kube-apiserver v1.12.8 dab16944dfce 3 months ago 194MB k8s.gcr.io/kube-controller-manager v1.12.8 6ccd44dc061f 3 months ago 164MB k8s.gcr.io/kube-scheduler v1.12.8 c09febff85d6 3 months ago 58.4MB k8s.gcr.io/pause-amd64 3.0 99e59f495ffa 3 years ago 747kB kopeio/etcd-manager 3.0.20190801 720955e04498 49 years ago 655MB
集群操作¶
kops 初始化 k8s cluster:
kops create cluster --name=${NAME} \ --image=ami-05f26f4d887c6de6e \ --zones=cn-north-1a \ --master-count=1 \ --master-size="t2.small" \ --node-count=1 \ --node-size="t2.micro" \ --vpc=${VPC_NAME} --networking=flannel \ --ssh-public-key="~/.ssh/id_rsa.pub" \ --subnets=${SUBNET_NAME} \ -v 5 \ --kubernetes-version="https://s3.cn-north-1.amazonaws.com.cn/kubernetes-release/release/${K8S-VERSION}"
修改 kops 参数:
kops edit cluster ${NAME}
编辑配置文件,添加前面准备的镜像仓库与文件仓库地址:
spec: assets: containerRegistry: 镜像仓库地址 fileRepository: 文件仓库地址( 可以为 http / https URL,根据日志上显示 由管理端的 kops 程序拉取数据 ) docker: logDriver: "" registryMirrors: - https://registry.docker-cn.com
创建集群:
kops update cluster ${NAME} --yes -v 10
删除集群
kops delete cluster ${NAME} --yes -v 10
警告
需要注意 安全组策略 和 dns公网解析