项目都在阿里云国际版香港区,所以环境使用:
Alibaba Cloud: Cloud Computing Services
准备工作:
- 创建香港区VPC,规格192.168.0.0/16,且创建该VPC下SwitchB/C/D各区交换机。
- 有效域名,如集群在内地则域名需要公安备案。
- 有效SSL证书(阿里云证书或者自己上传的证书,状态为已签发或有效),我用的是:*.wuushu.cn
- 创建【极速型NAS,高级】文件存储,香港可用区B,100GB不加密(可设置快照策略,回滚需API手工恢复)
- 为方便控制集群NAS文件系统,在自定义VPC下香港B区交换机,创建同样在香港B区的低配ECS装好宝塔面板,在根目录下创建文件夹/mntNAS,owner改成root。
- 在NAS文件系统列表【操作】>【添加挂载点】,选择自定义VPC,交换机选SwitchB,权限组选默认全部允许,保存。点击【管理】>【挂载使用】,点击【挂载】,选择宝塔那台香港B区ECS实例,挂载路径:/mntNAS 且勾选【开机自动挂载】,等挂载成功,记录挂载点地址:***.cn-hongkong.extreme.nas.aliyuncs.com
- 回到宝塔面板首页刷新,可以看到挂载成功,总量99GB,创建完文件系统会自动占用134MB。进入/mntNAS文件夹,创建owner为root的文件夹/mntNAS/base
- 在阿里云后台星标服务:
Serverless容器服务ASK 或
容器服务-Kubernetes(一回事)
创建集群:
- 点击【创建集群】选择【ASK集群】
- 输入【集群名称】我输入的ASK-ALLINONE
- 规模【Pro版】 地域【中国(香港)】
- K8s版本【1.22.3-aliyun.1】
- 专有网络【使用已有】选择之前的VPC,虚拟交换机勾选之前创建的B和C,交换机香港D区目前不能选。
- 勾选【为专有网络配置SNAT】,作用是如果你的VPC不具备公网访问能力,则阿里云帮你创建NAT网关并自动配置SNAT规则(收费)。
- Service CIDR用自动给的172.21.0.0/20
- API Server访问,选【标准型I (slb.s2.small)】最大连接数5w,每秒新建连接数和每秒查询数5000
- 勾选【使用EIP暴露API Server】,开启后将为内网SLB实例绑定一个EIP,获得从公网访问集群API Server的能力,这样可以使用Cloudshell进行kubectl操作。
- 安全组默认选用【自动创建企业安全组】
- 时区【上海】
- 集群删除保护勾选【防止通过控制台或API误删除集群】
- 资源组可以选择默认资源组,我选了自创的资源组。
- 标签,跳过
- 集群本地域名,我输入的【allinone.cluster.local】
- 点击【下一步:组件配置】
- 服务发现默认【不开启】
可选装PrivateZone或CoreDNS(收费)。 - Ingress,选【ALB Ingress】
- 监控服务勾选【安装metrics-server监控组件】会启动一个单副本ECI实例,占用0.25核0.5GB内存
- 日志服务,勾选【使用日志服务】创建新Project
- Knative,勾选【开启Knative】
- 点击【下一步:确认配置】
- 可以看到收费项有:API Server负载均衡、NAT网关、弹性公网IP(EIP),日志服务(SLS),都是按量付费。
- 检查配置,勾选服务协议,点击【创建集群】
- 阿里云界面显示:集群创建需要约 3 分钟。
进入集群,点命名空间切换为【default】,点击【工作负载】下的【无状态】,点击【使用YAML创建资源】
创建AlbConfig
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
name: alb-allinone
addressType: Internet
zoneMappings:
- vSwitchId: vsw-uf6ccg2a9g71hx8go****
- vSwitchId: vsw-uf6nun9tql5t8nh15****
注:2个vSwitchId是香港B/C区的交换机id
另外在自定义资源,资源对象浏览器的alibabacloud.com下的Albconfig里面,找到port: 443
在下方将这几个false改成true:
XForwardedForEnabled: true
XForwardedForProtoEnabled: true
XForwardedForSLBIdEnabled: true
XForwardedForSLBPortEnabled: true
创建IngressClass
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: alb
spec:
controller: ingress.k8s.alibabacloud/alb
parameters:
apiGroup: alibabacloud.com
kind: AlbConfig
name: default
这个IngressClass通过
kubectl get crd -A
然后再使用
kubectl -n namespace get albxxx xxx -o yaml 就能看到
创建完,进到阿里云负载均衡SLB服务,在应用型负载均衡ALB下看到新创建的ALB,记录ALB的域名:alb-***.cn-hongkong.alb.aliyuncs.com
至此,一个ASK Serverless集群就准备好了,我们下一步建立一个简单的Ghost博客系统,使用轻量级数据库SQLite。