在 Kubernetes 集群中运营 WordPress

图片 1

在完结前边kubernetes数据长久化的读书之后,本节大家开始尝试在k8s集群中配备nginx应用,对于nginx来讲,供给漫长化的数量主要有两块:

作为一名开拓者,作者会尝试留意那个本身也许不会每Smart用的本领的向上。掌握这几个手艺主要,因为它们或者会直接影响到笔者的工作。例如
Docker
推动
的、前段时间正在兴起的容器化技术,可用于上规模地托管
Web 应用。从技能层面来说,小编并不是一个 DevOps,但当自己每一日营造 Web
应用时,多去留心那个能力怎么去发展,会对自身有所裨益。

1、nginx配置文件和日志文件
2、网页文件

这种发展的一个绝佳的例子,是近一段时间高速发展的器皿编排平台。它同意你轻巧地配置、管理容器化应用,并对它们的层面举办调度。近期总的来讲,容器编排的风靡工具备
Kubernetes (来自 Google)Docker
Swarm
Apache
Mesos
。借令你想较好的询问上边那些技艺以及它们的界别,小编推荐你看一下那篇文章

一、配置nginx网页文件长久化

在这篇作品中,我们将会从局地回顾的操作起来,明白一下 Kubernetes
平台,看看哪些将贰个 WordPress 网址安排在该地机械上的多少个单节点集群中。

1、ReplicationController配置文件如下

安装 Kubernetes

Kubernetes
文档
中有一个很好的互相教程,涵盖了不计其数事物。但出于本文的指标,小编只会介绍在
MacOS 中 Kuberentes 的安装和选拔。

咱俩要做的率先件事是在您的本地主机中设置 Kubernetes。大家将选拔三个叫做
MiniKube
的工具,它极度用于在你的机器上方便地设置三个用来测量检验的 Kubernetes 集群。

依赖 Minikube
文书档案,在大家开头以前,有一部分先决条件。首先要确认保证你早已设置了三个Hypervisor (作者将会动用 Virtualbox)。接下来,大家要求安装 Kubernetes
命令行工具
(也就是
kubectl)。假诺您在用 Homebrew,这一步极其轻松,只要求周转命令:

  1. $ brew install kubectl

最近我们能够真正 安装
Minikube
了:

  1. $ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.21.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

最后,我们要启动
Minicube

创建几个虚构机,来作为大家的单节点 Kubernetes
集群。今后自己要说一些:尽管大家在本文中只在本土运营它,但是在当真的服务器上运行Kubernetes
集群时,后边提到的多数概念都会适用。在多节点集群上,“主节点”将担任管理另外职业节点(虚构机或物理服务器),何况Kubernetes 将会在集群中自动进行容器的散发和调治。

  1. $ minikube start --vm-driver=virtualbox

# cat nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-test
  labels:
    name: nginx-test
spec:
  replicas: 2
  selector:
    name: nginx-test
  template:
    metadata:
      labels:
      name: nginx-test
    spec:
      containers:
      – name: nginx-test
        image: docker.io/nginx
        volumeMounts:
        – mountPath: /usr/share/nginx/html
          name: nginx-data
        ports:
        – containerPort: 80
      volumes:
      – name: nginx-data
        persistentVolumeClaim:
          claimName: nfs-data

安装 Helm

现行,本机中应当有叁个正在运作的(单节点)Kubernetes
集群了。大家未来得以用任何方法来与 Kubernetes
交互。要是你想前几天能够体会一下,作者感到
kubernetesbyexample.com
能够很好地向你介绍 Kubernetes 的概念和术语。

固然大家能够手动配置那么些东西,但实则我们将会利用别的的工具,来将我们的
WordPress 应用陈设到 Kubernetes 集群中。Helm
被喻为“Kubernetes
的包管理工科具”,它能够让您轻轻巧松地在您的集群中布置预创设的软件包,也正是“图表chart”。你能够把图纸看做一组专为特定应用(如
WordPress)而安插的器皿定义和布局。首先我们在地面主机上设置 Helm:

  1. $ brew install kubernetes-helm

然后大家要求在集群中安装 Helm。 幸运的是,只须要周转上边的授命就好:

  1. $ helm init

2、sevice配置文件如下

安装 WordPress

后天 Helm 已经在大家的集群中运作了,大家得以设置 WordPress
图表
。运行:

  1. $ helm install --namespace wordpress --name wordpress --set serviceType=NodePort stable/wordpress

那条命令将会在容器中设置并运营 WordPress,并在容器中运营 MariaDB
作为数据库。它在 Kubernetes 中被堪称“Pod”。贰个
Pod
基本上可说是多少个或多个应用程序容器和那一个器皿的片段分享能源(比如存款和储蓄卷,网络等)的组合的悬空。

大家须求给那个布局二个名字和三个命名空间,以将它们协会起来并有助于搜索。我们同样会将
serviceType 设置为 NodePort
。这一步比较重大,因为在暗中同意设置中,服务类型会被设置为
LoadBalancer。由于大家的集群未来从未负载均衡器,所以大家将不可能在集群外访谈我们的
WordPress 站点。

在出口数据的末尾一部分,你会专注到部分有关访谈你的 WordPress
站点的可行的下令。运营那么些命令,你可以获得到大家的 WordPress 站点的外部IP 地址和端口:

  1. $ export NODE_PORT=$(kubectl get--namespace wordpress -o jsonpath="{.spec.ports[0].nodePort}" services wordpress-wordpress)
  2. $ export NODE_IP=$(kubectl get nodes --namespace wordpress -o jsonpath="{.items[0].status.addresses[0].address}")
  3. $ echo http://$NODE_IP:$NODE_PORT/admin

你将来走访刚刚生成的 URAV4L(忽略 /admin 部分),就足以看出 WordPress
已经在你的 Kubernetes 集群中运营了!

# cat nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-test
  labels:
  name: nginx-test
spec:
  type: NodePort
  ports:
  – port: 80
    protocol: TCP
    targetPort: 80
    name: http
    nodePort: 30088
  selector:
name: nginx-test

扩展 WordPress

Kubernetes
等服务编排平台的三个宏伟之处,在于它将使用的扩大和治本变得毫不费力。大家看一下使用的陈设情况:

  1. $ kubectl get deployments --namespace=wordpress

图片 2

能够见见,大家有三个布局,三个是 Mariadb 数据库,二个是 WordPress
自己。未来,大家借使你的 WordPress
开头承载大量的流量,所以大家想将那些负载分摊在两个实例上。大家得以经过二个总结的授命来扩张
wordpress-wordpress 部署:

  1. $ kubectl scale --replicas 2 deployments wordpress-wordpress --namespace=wordpress

再度运维 kubectl get deployments,大家前日应有拜望到下边包车型地铁场合:

图片 3

您刚刚增添了你的 WordPress 站点规模!一流轻巧,对不对?未来我们有了多个WordPress 容器,能够在它们中间对流量举行负荷均衡。想精晓 Kubernetes
增加的更加的多音讯,参见那篇指南

3、通过配备文件创制ReplicationController和service

高可用

Kubernetes
等楼台的的另一大特征在于,它不单单能进行有益的扩张,还能透过自愈组件来提供高可用性。借使大家的三个WordPress 计划因为一些原因失效了,那 Kubernetes
会立时自动替换掉那几个布局。我们得以经过删除大家 WordPress 布置的一个 pod
来效仿这几个进度。

第一运营命令,获取 pod 列表:

  1. $ kubectl get pods --namespace=wordpress

图片 4

然后删除个中一个 pod:

  1. $ kubectl delete pod wordpress-wordpress-876183909-jqc8s --namespace=wordpress

万一您重国民党的新生活运动行 kubectl get pods 命令,应该会看到 Kubernetes
立时换上了新的 pod (3l167)。

图片 5

# kubectl create -f nginx-rc.yaml
# kubectl create -f nginx-svc.yaml

更进一竿

作者们只是简短精通了 Kubernetes
能成功专门的学问的外界。假若你想长远钻研,小编提出您查看以下职能:

你在容器平台上运维过 WordPress 吗?有未有选用过
Kubernetes(或其余容器编排平台),有未有何样好的技艺?你平常会怎么扩大你的
WordPress 站点?请在商讨中告知大家。


作者简要介绍:

吉尔Bert 喜欢创设软件。从 jQuery 脚本到 WordPress 插件,再到完全的 SaaS
应用程序,吉尔伯特 平素在创设优雅的软件。
他粗昂做的最出名的的成品,应该是 Nivo Slider.


via: https://deliciousbrains.com/running-wordpress-kubernetes-cluster/

作者:Gilbert
Pellegrom

译者:StdioA
校对:wxy

本文由 LCTT
原创编写翻译,Linux中国 荣誉推出

本文永远更新链接地址http://www.linuxidc.com/Linux/2017-09/146989.htm

图片 6

图片 7
图片 8

4、在nfs服务器上创制测量试验html文件

# echo ‘Hello, Welcome to my website…’ > /home/index.html

图片 9
图片 10

二、配置nginx配置文件悠久化
咱俩要求在前头网页文件持久化的根底上把nginx配置文件和日志文件也拓展长久化
1、创立PVC,在这之中nfs-data存储网页文件,nfs-nginx-etc存款和储蓄配置文件和日志文件

图片 11
图片 12

2、修改nginx-rc.yaml配置文件,挂载四个pvc

# cat nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-test
  labels:
    name: nginx-test
spec:
  replicas: 2
  selector:
    name: nginx-test
  template:
    metadata:
      labels:
      name: nginx-test
    spec:
      containers:
      – name: nginx-test
        image: docker.io/nginx
        volumeMounts:
        – mountPath: /usr/share/nginx/html
          name: nginx-data
        – mountPath: /etc/nginx
          name: nginx-etc
        ports:
        – containerPort: 80
      volumes:
      – name: nginx-data
        persistentVolumeClaim:
        claimName: nfs-data
      – name: nginx-etc
        persistentVolumeClaim:
        claimName: nfs-nginx-etc

3、重新成立rc验证三个PVC是不是成功挂载

# kubectl delete -f nginx-rc.yaml
# kubectl create -f nginx-rc.yaml
# kubectl get pod
# kubectl describe pod nginx-test-kllfw

图片 13

通过在相应的node节点上inspect docker容器验证

图片 14

4、通过拜谒网页,发掘nginx的server_token为打开状态

图片 15

5、这里大家由此修改error_log和access_log到nfs路径下,同时将server_token修改为off

图片 16

6、重启nginx使配置文件
通过将rc的别本数重新安装为0后,再将别本数设置为2,到达重启nginx的意义。
当然这里也能够通过kubectl exec的措施开始展览。

图片 17

7、验证
验证server_token已经打响关闭

图片 18

表达在nfs server上能看到nginx的拜见日志,申明配置文件修改成功。

图片 19

在生育条件中,nginx服务的昭示须求思考动用ingress,nginx配置文件应当率先思考采用configmap来达成。

本文永恒更新链接地址https://www.linuxidc.com/Linux/2018-03/151281.htm

图片 20

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图