如何在Linode上安装Kubernetes上的WordPress
WordPress是众所周知的教程 工具之一。
它使用关系数据库来存储内容:文章,涉及元数据,而persistentvolume(pv)和persistentvolumeclaim(pvc)存储资产数据。
本教程将在Linode上使用Kubernetes上的MySQL数据库向我们展示在Kubernetes上安装单个副本的单个副本。
在Linode上设置Kubernetes集群
本节将通过在Linode上设置Kubernetes的所有步骤。
COM。
首先,让我们在Linode上注册一个帐户,然后登录Linode仪表板。
转到Kubernetes子菜单然后单击"在右上角的"添加群集"按钮并填写现场:群集标签,选择合适的区域并选择Kubernetes版本。
Kubernetes子菜单在Linode仪表板上
然后,让我们为Kubernetes群集添加节点池。
在本教程中,我们将使用"专用的4GB"计划设置1节点群集,节点具有4 GB 内存,2 CPU和80 GB存储。
添加节点池
最后,单击"创建群集"以提供Kubernetes群集。
创建集群
等待几分钟,Kubernetes群集已成功配置。
让我们将Kubeconfig文件下载到本地计算机,因此我们可以方便地与群集进行交互。
下载Kubeconfig.
在本地计算机上,创建名为的文件夹。
kube在主目录上,将下载的文件移动到该文件夹:
$mkdir ~/.kube $mv wordpress-kubeconfig.yaml .kube/config
此外,我们必须安装kubectl工具:
$curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl $chmod +x kubectl $sudo mv kubectl /usr/local/bin
现在,我们可以通过运行以下命令获取Kubernetes集群的信息:
$kubectl get node NAME STATUS ROLES AGE VERSION lke11043-13758-5f73eca05dae Ready 5m v1.18.8
创建persistentvolume和persistentvolumeclablam
WordPress和MySQL都需要PersistentVolume(PV)来存储数据。
PersistentVolume(PV)和PersistentVolumeclaim(PVC)独立于应用程序POD的生命周期。
重新启动,重新安排或者删除POD时,PV和PVC仍然保留并保留数据。
首先,提供持久性volume(PV),将通过持久性volumeclaim(PVC)来申请。
创建名为"pvc-mysql-wp的列表文件"。
Yaml"如下:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi -- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi
使用命令kubectl应用于创建PV:
$kubectl apply -f pvc-mysql-wp.yaml persistentvolumeclaim/mysql-pv-claim created persistentvolumeclaim/wp-pv-claim created
验证在创建PVC后自动配置PV:
$kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-658d8d2da7a241bd 20Gi RWO Retain Bound default/wp-pv-claim linode-block-storage-retain 5m pvc-ca93cd86df0d49c8 20Gi RWO Retain Bound default/mysql-pv-claim linode-block-storage-retain 5m1s
为MySQL数据库创建密码
Kubernetes使用秘密来存储密码或者私钥等敏感数据。
让我们创建一个文件秘密。 Yaml
与我们最喜欢的编辑如下:
apiVersion: v1 kind: Secret metadata: name: mysql-pass type: Opaque data: password: yourpassword
应用列表:
$kubectl apply -f secret.yaml secret/mysql-pass created
验证秘密是否已成功创建:
$kubectl get secret NAME TYPE DATA AGE default-token-gcgp4 kubernetes.io/service-account-token 3 7h52m mysql-pass Opaque 1 2m33s
部署MySQL.
我们可以使用以下列表文件创建MySQL的单个实例部署。
PersistentVolume将安装在/var/lib/mysql。
让我们创建文件mysql-deployment。 yaml
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None -- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim: claimName: mysql-pv-claim
然后,应用上面的列表:
$kubectl apply -f mysql-deployment.yaml service/wordpress-mysql unchanged deployment.apps/wordpress-mysql created
验证已成功部署MySQL POD:
$kubectl get pod NAME READY STATUS RESTARTS AGE wordpress-mysql-57464b4779-vtjrf 1/1 Running 0 3m33s
部署WordPress
我们可以使用以下列表部署Kubernetes集群上的WordPress。
WordPress容器使用的PersistentVolume将安装在/var/www/html上。
服务WordPress具有类型LoadBalancer,以便从群集之外访问。
让我们创建文件wordpress-deployment。 yaml
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer -- apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wp-pv-claim
现在,让我们运行以下命令来部署WordPress:
$kubectl apply -f wordpress-deployment.yaml service/wordpress created deployment.apps/wordpress created
验证WordPress是否已启动并运行:
$kubectl get pod NAME READY STATUS RESTARTS AGE wordpress-6857459697-wmgn9 1/1 Running 0 3m34s wordpress-mysql-57464b4779-vtjrf 1/1 Running 0 32m
验证所有服务是否正在运行:
$kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.128.0.1 443/TCP 12h wordpress LoadBalancer 10.128.108.139 172.104.37.236 80:30567/TCP 5s wordpress-mysql ClusterIP None 3306/TCP 29m
现在,我们可以通过服务WordPress的外部IP访问WordPress页面。
让我们将其复制并粘贴到Web浏览器: