阿里云容器集群服务试用-部署wordpress

在创建集群的时候,需要注意添加四个东西:

  1. NAT网关并配置SNAT:如果希望集群内的容器访问公网下载资源,就需要配置。当配置SNAT时,会自动生成另一个EIP。这个是用来让集群内的容器访问公网的,和我们用来访问集群的IP不一样。
  2. EIP:如果你希望通过公网访问集群,或者希望集群内的容器访问公网下载资源,就需要配置
  3. CSI Provisioner:阿里云对CSI接口的实现,如果项目需要挂载数据卷,需要提前安装好(官方说在创建时可以配置,但我没看到)
  4. CoreDNS:很多复杂的helm应用里模块互相请求都会用到路由,需要提前准备好
配置SNAT和EIP

虽然创建集群之后配置也可以,但只有在创建集群时配置,这些资源才会在删除集群时被一并删除。如果没有被绑定在集群上,我们很有可能会忘记删除这些琐碎的资源,从而导致扣费。

创建集群后也可以从集群中的组件管理模块中选择安装coreDNS和csi-provisioner

在一台客户端上安装好kubectlhelm,将集群连接信息页的公网访问贴到$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

创建StorageClass

为了安装wordpress,我们到应用-Helm模块中,点击创建,在弹出的应用市场候选项中选择ack-wordpress-sample。注意,这一步中需要填写release的名称,并选择namespace。

选取Helm应用

点击下一步,就可以看到配置参数文件。现在可以将配置文件中的storageClassName: alicloud-disk-ssd全部替换为storageClassName: wordpress-sc

如果按现在这样运行的话,会出现mariadb没有权限写入磁盘的错误,
这是因为运行容器的角色的权限不足。

Permission Denied

找到参数文件中的securityContext,将其中fsGrouprunAsUser的值改为0。其实这个不是mariadb的权限配置,而是php服务器的。阿里云提供的这个参数文件是有缺失的,我们需要在参数文件里额外写入

mariadb:
  securityContext:
    enabled: true
    fsGroup: 0
    runAsUser: 0

才可以解决这个问题。

点击确定后,就可以生成应用了。

其实注意一下Chart版本会发现阿里云应用市场里这个版本太老了,最推荐的还是直接用命令行拉取最新的helm仓库,把默认参数文件复制下来修改后配置给应用。当然,也是需要修改storageClassNamerunAsUser的。

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的主页了。

wordpress

找到Log In按钮,使用用户名user和我们刚才获取的密码就可以登录管理员控制台了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容