视频怎么转成网址链接,网站代码优化多少钱,品牌seo如何优化,网站设计属于什么分类号目前#xff0c;阿里云容器服务已经可以创建托管版 Kubernetes 集群了。相比于默认的 Kubernetes 集群#xff0c;托管版本会主动替您运维一套高可用的 Master 组件#xff0c;免去了默认版本集群中三个 Master ECS 节点#xff0c;从而节约所需的资金成本及维护时的人力成…目前阿里云容器服务已经可以创建托管版 Kubernetes 集群了。相比于默认的 Kubernetes 集群托管版本会主动替您运维一套高可用的 Master 组件免去了默认版本集群中三个 Master ECS 节点从而节约所需的资金成本及维护时的人力成本。在容器服务控制台我们为您提供了便捷使用的可视界面一步一步引导式地创建该类型集群。但当您需要反复创建托管版集群、大批量创建集群或者您就是天生抗拒控制台手工操作的那一类人可以了解并尝试使用一下 Terraform 了。
Terraform 是一款 Infrastructure as Code 的工具可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述有兴趣的同学可以参考 《云生态下的基础架构资源管理利器Terraform》 等云栖社区的优秀文章。目前我们一直在支持阿里云 Terraform Provider已经实现了阿里云上面绝大部分的云产品的对接。
在 2018 年圣诞节来临之前阿里云 Terraform Provider 已经发布 v1.26.0 版本其中已经支持了创建托管版Kubernetes 集群下面我们来一起看下如何实现命令行快速部署一个这样的集群。
创建托管版 Kubernetes 集群
首先我们打开《阿里云 Terraform Provider 文档 - 托管版 Kubernetes》的帮助文档可以看到该资源 Resource 提供的参数列表。参数分为入参 Argument 和出参 Attributes。入参列表内包含了必填参数以及可选参数例如 name 和 name_prefix 就是一对必填参数但它们互斥即不能同时填写。如果填了 name集群名就是 name 的值如果填了 name_prefix集群名会以 name_prefix 开头自动生成一个。我们对照文档中的参数列表 Argument Reference先草拟出一个集群的描述为了方便起见我把填写每个参数的理由都注释在代码中。
# 引入阿里云 Terraform Provider
provider alicloud {# 填入您的账号 Access Keyaccess_key FOO# 填入您的账号 Secret Keysecret_key BAR# 填入想创建的 Regionregion cn-hangzhou# 可选参数默认不填就使用最新版本version v1.26.0
}# 必要的资源标识
# alicloud_cs_managed_kubernetes 表明是托管版 Kubernetes 集群
# k8s 代表该资源实例的名称
resource alicloud_cs_managed_kubernetes k8s {# 集群名称可以带中划线一个账户内的集群名称不能相同name test-managed-kubernetes# 可以从 ECS 控制台上面查询到可用区信息以及对应的 ECS 实例类型库存# 以下代表 Worker 节点将部署在 cn-hangzhou-h 这个可用区采用 ecs.c5.xlarge 这个机型。availability_zone cn-hangzhou-hworker_instance_types [ecs.c5.xlarge]# 配置该集群 Worker 节点数为 2 个该数字后续可以再扩容worker_numbers [2]# Worker 节点使用高效云盘worker_disk_category cloud_efficiency# 默认为 true会在 VPC 内创建一个 Nat 网关用于 ECS 连上互联网new_nat_gateway true# 配置所有 ECS 的默认 Root 密码此处也可以用密钥对 key_name 代替但需要提前创建password Test12345# Kubernetes 集群内所有 Pod 使用的子网网段不能与 service_cidr 和 ECS 所在网段冲突# 默认创建的 VPC 是 192.168.0.0/16 这个网段内的所以 pod_cidr 和 service_cidr 可以使用 172 网段# 请参考 VPC下 Kubernetes 的网络地址段规划pod_cidr 172.20.0.0/16service_cidr 172.21.0.0/20# 安装云监控插件install_cloud_monitor true
}
我们可以将以上的配置保存为一个 main.tf 描述文件在该文件的当前目录下执行 terraform init 和 terraform apply。
xh4n3xh4n3:~/ops/terraform-example% terraform init --get-pluginstrue -upgradeInitializing provider plugins...
- Checking for available provider plugins on https://releases.hashicorp.com...
- Downloading plugin for provider alicloud (1.26.0)...Terraform has been successfully initialized!You may now begin working with Terraform. Try running terraform plan to see
any changes that are required for your infrastructure. All Terraform commands
should now work.xh4n3xh4n3:~/ops/terraform-example% terraform applyAn execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols: createTerraform will perform the following actions: alicloud_cs_managed_kubernetes.k8sid: computedavailability_zone: cn-hangzhou-hinstall_cloud_monitor: truename: test-managed-kubernetesname_prefix: Terraform-Creationnew_nat_gateway: truepassword: sensitivepod_cidr: 172.20.0.0/16security_group_id: computedservice_cidr: 172.21.0.0/20vpc_id: computedvswitch_ids.#: computedworker_disk_category: cloud_efficiencyworker_disk_size: 40worker_instance_charge_type: PostPaidworker_instance_types.#: 1worker_instance_types.0: ecs.c5.xlargeworker_nodes.#: computedworker_numbers.#: 1worker_numbers.0: 2Plan: 1 to add, 0 to change, 0 to destroy.Do you want to perform these actions?Terraform will perform the actions described above.Only yes will be accepted to approve.Enter a value:
从上述日志中可以看到terraform init 会把我们用到的 Provider 插件下载好terraform apply 会根据我们的 main.tf 描述文件计算出需要执行的操作上述显示将会创建一个 alicloud_cs_managed_kubernetes.k8s 的资源需要我们输入 yes 来确认创建。确认创建后创建大约会耗时五分钟terraform 会输出类似下面的日志。
# 以上省略
Do you want to perform these actions?Terraform will perform the actions described above.Only yes will be accepted to approve.Enter a value: yesalicloud_cs_managed_kubernetes.k8s: Creating...availability_zone: cn-hangzhou-hinstall_cloud_monitor: truename: test-managed-kubernetesname_prefix: Terraform-Creationnew_nat_gateway: truepassword: sensitive sensitivepod_cidr: 172.20.0.0/16security_group_id: computedservice_cidr: 172.21.0.0/20vpc_id: computedvswitch_ids.#: computedworker_disk_category: cloud_efficiencyworker_disk_size: 40worker_instance_charge_type: PostPaidworker_instance_types.#: 1worker_instance_types.0: ecs.c5.xlargeworker_nodes.#: computedworker_numbers.#: 1worker_numbers.0: 2
alicloud_cs_managed_kubernetes.k8s: Still creating... (10s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still creating... (20s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still creating... (30s elapsed)
# 以上省略
alicloud_cs_managed_kubernetes.k8s: Creation complete after 6m5s (ID: cc54df7d990a24ed18c1e0ebacd36418c)Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
当出现 Apply complete! Resources: 1 added 字样的时候集群已经成功创建此时我们也可以登录控制台后在控集群列表中看到集群。 修改托管版 Kubernetes 集群
在 Terraform Provider 中我们提供了一部分参数的修改能力一般情况下所有非 Force New Resouce强制新建资源的参数都可以被修改。下面我们修改部分参数注释内容为更新的项目。
provider alicloud {access_key FOOsecret_key BARregion cn-hangzhouversion v1.26.0
}resource alicloud_cs_managed_kubernetes k8s {# 更换集群的名称为 test-managed-kubernetes-updatedname test-managed-kubernetes-updatedavailability_zone cn-hangzhou-hworker_instance_types [ecs.c5.xlarge]# 修改 worker_numbers 为 3可以扩容一个 worker 节点worker_numbers [3]worker_disk_category cloud_efficiencynew_nat_gateway truepassword Test12345pod_cidr 172.20.0.0/16service_cidr 172.21.0.0/20install_cloud_monitor true# 导出集群的连接配置文件到 /tmp 目录kube_config /tmp/config# 导出集群的证书相关文件到 /tmp 目录下同client_cert /tmp/client-cert.pemclient_key /tmp/client-key.pemcluster_ca_cert /tmp/cluster-ca-cert.pem
}
同创建集群一样修改集群时使用的命令也是 terraform apply。执行后我们得到以下日志输出输入 yes 并回车我们就可以把该集群的名称改为 test-managed-kubernetes-updatedworker 节点扩容至 3 节点同时将导出证书和连接文件到本机的 /tmp 目录。
xh4n3xh4n3:~/ops/terraform-example% terraform apply
alicloud_cs_managed_kubernetes.k8s: Refreshing state... (ID: cc54df7d990a24ed18c1e0ebacd36418c)An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:~ update in-placeTerraform will perform the following actions:~ alicloud_cs_managed_kubernetes.k8sclient_cert: /tmp/client-cert.pemclient_key: /tmp/client-key.pemcluster_ca_cert: /tmp/cluster-ca-cert.pemkube_config: /tmp/configname: test-managed-kubernetes test-managed-kubernetes-updatedworker_numbers.0: 2 3Plan: 0 to add, 1 to change, 0 to destroy.Do you want to perform these actions?Terraform will perform the actions described above.Only yes will be accepted to approve.Enter a value: yesalicloud_cs_managed_kubernetes.k8s: Modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c)client_cert: /tmp/client-cert.pemclient_key: /tmp/client-key.pemcluster_ca_cert: /tmp/cluster-ca-cert.pemkube_config: /tmp/configname: test-managed-kubernetes test-managed-kubernetes-updatedworker_numbers.0: 2 3
alicloud_cs_managed_kubernetes.k8s: Still modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c, 10s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c, 20s elapsed)
alicloud_cs_managed_kubernetes.k8s: Still modifying... (ID: cc54df7d990a24ed18c1e0ebacd36418c, 30s elapsed)
# 以上省略
alicloud_cs_managed_kubernetes.k8s: Modifications complete after 4m4s (ID: cc54df7d990a24ed18c1e0ebacd36418c)Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
Terraform apply 运行成功后控制台中显示的集群信息已经表明现在集群已经变成了我们期望的状态。在本机上我们也通过导出的连接文件用 kubectl 连接到集群。 附录
控制台创建托管版 Kubernetes 集群帮助文档https://help.aliyun.com/document_detail/95108.html 云生态下的基础架构资源管理利器Terraformhttps://yq.aliyun.com/articles/215592 阿里云 Terraform Provider 代码库https://github.com/terraform-providers/terraform-provider-alicloud 阿里云 Terraform Provider 文档https://www.terraform.io/docs/providers/alicloud/index.html 阿里云 Terraform Provider 文档 - 托管版 Kuberneteshttps://www.terraform.io/docs/providers/alicloud/r/cs_managed_kubernetes.html VPC下 Kubernetes 的网络地址段规划https://help.aliyun.com/document_detail/86500.html Terraform 部署容器服务Kubernetes集群及Wordpress应用https://yq.aliyun.com/articles/641627 原文链接 本文为云栖社区原创内容未经允许不得转载。