EKS 使用PVC, StatefulSet 安装WordPress
1. 需要确保在EKS的add on当中安装了EBS CSI的插件,否则无法使用PVC

2. 需要安装好storage class, eks 默认是安装好了GP2的StorageClass, 但是由于GP3比较便宜,所以需要另外自行创建,GP3 最低可接受的容量是1GB, reclaimPolicy: Delete 表示当PVC被删除的时候EBS也是一并被删除
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gp3
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
3. 以下是StatefulSet,Service 和Ingress。 我使用的是AWS Load Balancer Controller, 不是Nginx Ingress Controller
想使用AWS Load Balancer Controller可以参考这文章:https://www.pangzai.win/eks%E5%AE%89%E8%A3%85aws-load-balancer-controller%E4%BB%A5%E4%BE%BFingress%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8alb/
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: wordpress
namespace: wordpress
spec:
serviceName: "wordpress"
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- name: wordpress
image: public.ecr.aws/docker/library/wordpress:php8.4-apache
ports:
- containerPort: 80
env:
- name: WORDPRESS_DB_HOST
value: "yourDbHost:3306"
- name: WORDPRESS_DB_USER
value: "yourUser"
- name: WORDPRESS_DB_PASSWORD
value: "yourPassword"
- name: WORDPRESS_DB_NAME
value: "wordpress"
- name: WORDPRESS_CONFIG_EXTRA
value: |
// 强制文件系统直接写入,避免 FTP 弹窗
define( 'FS_METHOD', 'direct' );
volumeMounts:
- name: wordpress-storage
mountPath: /var/www/html
volumeClaimTemplates:
- metadata:
name: wordpress-storage
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "gp3"
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
name: wordpress-service
namespace: wordpress
spec:
selector:
app: wordpress
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: wordpress-alb-ingress
namespace: wordpress
annotations:
alb.ingress.kubernetes.io/healthcheck-path: /
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
alb.ingress.kubernetes.io/ssl-redirect: '443'
spec:
ingressClassName: default-alb
rules:
- host: w.pangzai.win
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: wordpress-service
port:
number: 80
Facebook评论