共计 2126 个字符,预计需要花费 6 分钟才能阅读完成。
在完成前面 kubernetes 数据持久化的学习之后,本节我们开始尝试在 k8s 集群中部署 nginx 应用,对于 nginx 来说,需要持久化的数据主要有两块:
1、nginx 配置文件和日志文件
2、网页文件
一、配置 nginx 网页文件持久化
1、ReplicationController 配置文件如下
# cat nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-test
labels:
name: nginx-test
spec:
replicas: 2
selector:
name: nginx-test
template:
metadata:
labels:
name: nginx-test
spec:
containers:
– name: nginx-test
image: docker.io/nginx
volumeMounts:
– mountPath: /usr/share/nginx/html
name: nginx-data
ports:
– containerPort: 80
volumes:
– name: nginx-data
persistentVolumeClaim:
claimName: nfs-data
2、sevice 配置文件如下
# cat nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-test
labels:
name: nginx-test
spec:
type: NodePort
ports:
– port: 80
protocol: TCP
targetPort: 80
name: http
nodePort: 30088
selector:
name: nginx-test
3、通过配置文件创建 ReplicationController 和 service
# kubectl create -f nginx-rc.yaml
# kubectl create -f nginx-svc.yaml
4、在 nfs 服务器上创建测试 html 文件
# echo ‘Hello, Welcome to my website…’ > /home/index.html
二、配置 nginx 配置文件持久化
我们需要在前面网页文件持久化的基础上把 nginx 配置文件和日志文件也进行持久化
1、创建 PVC,其中 nfs-data 存储网页文件,nfs-nginx-etc 存储配置文件和日志文件
2、修改 nginx-rc.yaml 配置文件,挂载两个 pvc
# cat nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-test
labels:
name: nginx-test
spec:
replicas: 2
selector:
name: nginx-test
template:
metadata:
labels:
name: nginx-test
spec:
containers:
– name: nginx-test
image: docker.io/nginx
volumeMounts:
– mountPath: /usr/share/nginx/html
name: nginx-data
– mountPath: /etc/nginx
name: nginx-etc
ports:
– containerPort: 80
volumes:
– name: nginx-data
persistentVolumeClaim:
claimName: nfs-data
– name: nginx-etc
persistentVolumeClaim:
claimName: nfs-nginx-etc
3、重新创建 rc 验证两个 PVC 是否成功挂载
# kubectl delete -f nginx-rc.yaml
# kubectl create -f nginx-rc.yaml
# kubectl get pod
# kubectl describe pod nginx-test-kllfw
通过在对应的 node 节点上 inspect docker 容器验证
4、通过访问网页,发现 nginx 的 server_token 为开启状态
5、这里我们通过修改 error_log 和 access_log 到 nfs 路径下,同时将 server_token 修改为 off
6、重启 nginx 使配置文件
通过将 rc 的副本数重新设置为 0 后,再将副本数设置为 2,达到重启 nginx 的效果。
当然这里也可以通过 kubectl exec 的方式进行。
7、验证
验证 server_token 已经成功关闭
验证在 nfs server 上能看到 nginx 的访问日志,证明配置文件修改成功。
在生产环境中,nginx 服务的发布需要考虑使用 ingress,nginx 配置文件应当首先考虑使用 configmap 来实现。