无互联网出口AWS环境下用kops部署Kubernetes集群
在无互联网访问的AWS环境中使用kops部署Kubernetes集群
我在完全隔离的AWS环境下成功用kops部署过Kubernetes集群,核心难点就是替换kops默认依赖的互联网资源,尤其是nodeup和kubelet这类关键二进制文件。下面是经过验证的实操步骤:
1. 提前准备离线核心资源
首先要把kops依赖的核心二进制文件下载到本地,再上传到你AWS环境内可访问的私有S3桶(内网S3无需互联网)。你提到的关键资源如下:
125993c220d1a9b5b60ad20a867a0e7cda63e64c:Kubernetes v1.8.4版本的kubelet(linux/amd64架构)8e2314db816b9b4465c5f713c1152cb0603d...:kops的nodeup二进制文件(请补充完整哈希值)
上传时确保kops使用的IAM角色拥有该S3桶的s3:GetObject权限,避免后续节点拉取资源失败。
2. 配置kube_env.yaml文件
kops通过这个配置文件指定离线资源的路径和校验哈希,替换默认的互联网下载地址。创建或修改该文件,示例内容如下:
# 指定离线kubelet资源 kubelet: url: s3://your-offline-k8s-resources/kubelet-v1.8.4-amd64 hash: 125993c220d1a9b5b60ad20a867a0e7cda63e64c # 指定离线nodeup资源 nodeup: url: s3://your-offline-k8s-resources/nodeup hash: 8e2314db816b9b4465c5f713c1152cb0603d...
提示:如果还有kubectl、kube-proxy等其他组件需要离线部署,同样在该文件中添加对应组件的
url和hash字段即可。
3. 执行kops集群创建命令
在运行kops创建集群时,通过--kube-env参数指向刚才的配置文件,同时指定其他集群参数(如节点数量、可用区等)。示例命令:
kops create cluster \ --name your-cluster.internal \ --state s3://your-kops-state-store \ --kube-env ./kube_env.yaml \ --master-count 3 \ --node-count 6 \ --zones us-east-1a,us-east-1b,us-east-1c \ --networking weave \ --yes
4. 验证集群部署状态
集群创建完成后,用kops验证节点和组件状态:
kops validate cluster --state s3://your-kops-state-store
如果所有节点状态显示为Ready,说明离线资源配置生效,集群部署成功。
内容的提问来源于stack exchange,提问作者bhargavpss
相关产品推荐
相关产品推荐

