如何在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浏览器:

