在创建集群的时候,需要注意添加四个东西:
- NAT网关并配置SNAT:如果希望集群内的容器访问公网下载资源,就需要配置。当配置SNAT时,会自动生成另一个EIP。这个是用来让集群内的容器访问公网的,和我们用来访问集群的IP不一样。
- EIP:如果你希望通过公网访问集群,或者希望集群内的容器访问公网下载资源,就需要配置
- CSI Provisioner:阿里云对CSI接口的实现,如果项目需要挂载数据卷,需要提前安装好(官方说在创建时可以配置,但我没看到)
- CoreDNS:很多复杂的helm应用里模块互相请求都会用到路由,需要提前准备好
虽然创建集群之后配置也可以,但只有在创建集群时配置,这些资源才会在删除集群时被一并删除。如果没有被绑定在集群上,我们很有可能会忘记删除这些琐碎的资源,从而导致扣费。
在一台客户端上安装好kubectl
和helm
,将集群连接信息页的公网访问贴到$HOME/.kube/config
中,就可以通过kubectl
访问集群了。
$ kubectl get ns
NAME STATUS AGE
default Active 30m
kube-node-lease Active 30m
kube-public Active 30m
kube-system Active 30m
阿里云的Helm应用市场里提供了wordpress的镜像,看上去好像很简单,但其实官方的教程里有很多的坑。
首先,我们需要为wordpress的数据库和持久化绑定StorageClass
,参数文档里默认的alicloud-disk-ssd
是不存在的,我们需要先去右侧的存储-存储类模块创建一个StorageClass
,假设它叫做wordpress-sc
。
为了安装wordpress,我们到应用-Helm模块中,点击创建,在弹出的应用市场候选项中选择ack-wordpress-sample。注意,这一步中需要填写release的名称,并选择namespace。
点击下一步,就可以看到配置参数文件。现在可以将配置文件中的storageClassName: alicloud-disk-ssd
全部替换为storageClassName: wordpress-sc
。
如果按现在这样运行的话,会出现mariadb没有权限写入磁盘的错误,
这是因为运行容器的角色的权限不足。
找到参数文件中的securityContext
,将其中fsGroup
和runAsUser
的值改为0。其实这个不是mariadb的权限配置,而是php服务器的。阿里云提供的这个参数文件是有缺失的,我们需要在参数文件里额外写入
mariadb:
securityContext:
enabled: true
fsGroup: 0
runAsUser: 0
才可以解决这个问题。
点击确定后,就可以生成应用了。
其实注意一下Chart版本会发现阿里云应用市场里这个版本太老了,最推荐的还是直接用命令行拉取最新的helm仓库,把默认参数文件复制下来修改后配置给应用。当然,也是需要修改storageClassName
和runAsUser
的。
helm repo add bitnami https://charts.bitnami.com/bitnami
helm update
helm install wordpress bitnami/wordpress -n wordpress-ns--create-namespace --version 18.1.3 --values spinq-config.yaml --timeout 600s
此时我们可以通过命令行或者网页控制台查看我们的应用是否就绪。
$ kubectl get pods -n wordpress-ns
NAME READY STATUS RESTARTS AGE
wordpress-ack-wordpress-sample-547db8b9f8-rlssh 1/1 Running 3 24m
wordpress-mariadb-0 1/1 Running 0 20m
安装好之后会有一大堆指令。根据指令,可以获得管理员用户的密码。
kubectl get secret -n wordpress-ns wordpress-ack-wordpress-sample -o jsonpath="{.data.wordpress-password}" | base64 --decode
还可以知道我们的wordpress服务所暴露的地址。
$ kubectl get svc -n wordpress-ns
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress-ack-wordpress-sample LoadBalancer 172.16.223.54 47.106.199.126 80:30740/TCP,443:32346/TCP 26m
wordpress-mariadb ClusterIP 172.16.16.98 <none> 3306/TCP 26m
因为type为LoadBalencer
,此时我们浏览器访问http://47.106.199.126就可以看到wordpress的主页了。
找到Log In按钮,使用用户名user
和我们刚才获取的密码就可以登录管理员控制台了。