Kubernetes容器化工具Kind实践部署Kubernetes v1.18.x 版本, 发布WordPress和MySQL (4)

application/wordpress/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: v1 kind: PersistentVolumeClaim metadata: name: mysql-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- 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

以下清单描述了单实例WordPress部署。WordPress容器将PersistentVolume安装在/var/www/html用于网站数据文件的位置。在WORDPRESS_DB_HOST环境变量设置上面定义的MySQL服务的名称,WordPress会由服务访问数据库。在 WORDPRESS_DB_PASSWORD环境变量设置从生成的秘密kustomize数据库密码。

application/wordpress/wordpress-deployment.yaml

application/wordpress/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: v1 kind: PersistentVolumeClaim metadata: name: wp-pv-claim labels: app: wordpress spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi --- 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

使用curl 命令直接下载配置文件

下载MySQL部署配置文件。

curl -LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml

下载WordPress配置文件。

curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml

将它们添加到kustomization.yaml文件。

cat <<EOF >>./kustomization.yaml resources: - mysql-deployment.yaml - wordpress-deployment.yaml EOF

执行并验证

在kustomization.yaml包含用于部署WordPress网站和MySQL数据库的所有资源。您可以通过以下方式启动应用

kubectl apply -k ./

现在,您可以验证所有对象是否存在。

通过运行以下命令来验证机密是否存在:

kubectl get secrets

响应应如下所示:

NAME TYPE DATA AGE mysql-pass-c57bb4t7mf Opaque 1 9s

验证是否已动态配置PersistentVolume。

kubectl get pvc

注意:设置和绑定PV可能要花费几分钟。

响应应如下所示:

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql-pv-claim Bound pvc-8cbd7b2e-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s wp-pv-claim Bound pvc-8cd0df54-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s

通过运行以下命令来验证Pod是否正在运行:

kubectl get pods

注意: Pod的状态最多可能需要几分钟的时间RUNNING。

响应应如下所示:

NAME READY STATUS RESTARTS AGE wordpress-mysql-1894417608-x5dzt 1/1 Running 0 40s

通过运行以下命令来验证服务是否正在运行:

kubectl get services wordpress

响应应如下所示:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE wordpress LoadBalancer 10.0.0.89 <pending> 80:32406/TCP 4m

注意: Minikube只能通过公开服务NodePort。EXTERNAL-IP始终处于挂起状态。

​ 当前我使用的是kind创建集群,可以直接通过端口转发方式,进行访问WordPress页面

运行以下命令以获取WordPress服务的IP地址:

kubectl port-forword --address 0.0.0.0 svc/wordpress 8000:80

复制IP地址,然后将页面加载到浏览器中以查看您的站点。

您应该看到类似于以下屏幕截图的WordPress设置页面。

wordpress初始化

警告:请勿在此页面上保留WordPress安装。如果其他用户找到了它,他们可以在您的实例上建立一个网站并使用它来提供恶意内容。

通过创建用户名和密码来安装WordPress或删除您的实例。

删除WordPress

运行以下命令以删除您的密钥,部署,服务和PersistentVolumeClaims:

kubectl delete -k ./

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxxjx.html