进阶版部署nginx,使用nfs持久化nginx的 html 和 log 文件
这里不赘述
[root@master ~]# kubectl create configmap nginx-configmap --from-file=${DIR}/nginx/conf/nginx.conf
configmap/confnginx created
# 查看是否创建成功
[root@master ~]# kubectl get configmap
NAME DATA AGE
nginx-configmap 1 23s
点击查看
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nhtml-pv
labels:
pv: nhtml-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 2Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: "/home/summer/nginx/html"
server: 192.168.0.96
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nlog-pv
labels:
pv: nlog-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 2Gi
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: "/home/summer/nginx/log"
server: 192.168.0.96
点击查看
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nhtml-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs
selector:
matchLabels:
pv: nhtml-pv
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nlog-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs
selector:
matchLabels:
pv: nlog-pv
点击查看
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 2080
selector:
app: nginx
点击查看
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx
labels:
name: nginx
spec:
serviceName: nginx
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: k8snginx:v1
imagePullPolicy: Never
resources:
limits:
cpu: 450m
memory: 4048Mi
requests:
cpu: 400m
memory: 4048Mi
env:
- name: TZ
value: Asia/Shanghai
ports:
- containerPort: 80
volumeMounts:
- mountPath: /usr/local/nginx/conf/nginx.conf
name: vol-conf
subPath: nginx.conf
- mountPath: /usr/local/nginx/logs/
name: vol-log
- mountPath: /usr/local/nginx/html/
name: vol-html
volumes:
- name: vol-conf
configMap:
name: nginx-configmap
- name: vol-log
persistentVolumeClaim:
claimName: nlog-pvc
- name: vol-html
persistentVolumeClaim:
claimName: nhtml-pvc
注意顺序,一般先创建PV,然后PVC申请PV资源,再创建服务与pod
[root@master ~]# kubectl create -f ${DIR}/nginx/pv.yml
[root@master ~]# kubectl create -f ${DIR}/nginx/pvc.yml
[root@master ~]# kubectl create -f ${DIR}/nginx/service.yml
[root@master ~]# kubectl create -f ${DIR}/nginx/pod.yml
、
[root@master]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx NodePort 10.111.91.64 <none> 80:2080/TCP 23h
[root@master]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-0 1/1 Running 0 23h
[root@master]# kubectl get configmap
NAME DATA AGE
nginx-configmap 1 5d23h
[root@master]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nhtml-pv 2Gi RWO Retain Bound default/nhtml-pvc nfs 3h
nlog-pv 2Gi RWO Retain Bound default/nlog-pvc nfs 3h
[root@master]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
nhtml-pvc Bound nhtml-pv 2Gi RWO nfs 3h
nlog-pvc Bound nlog-pv 2Gi RWO nfs 3h