在完成前面kubernetes数据持久化的学习之后,本节我们开始尝试在k8s集群中部署nginx应用,对于nginx来说,需要持久化的数据主要有两块:
1、nginx配置文件和日志文件
2、网页文件

一、配置nginx网页文件持久化
1、ReplicationController配置文件如下

# cat nginx-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:name: nginx-testlabels:name: nginx-test
spec:replicas: 2selector:name: nginx-testtemplate:metadata:labels: name: nginx-testspec:containers:- name: nginx-testimage: docker.io/nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: nginx-dataports:- containerPort: 80volumes:- name: nginx-datapersistentVolumeClaim:claimName: nfs-data

2、sevice配置文件如下

# cat nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:name: nginx-testlabels: name: nginx-test
spec:type: NodePortports:- port: 80protocol: TCPtargetPort: 80name: httpnodePort: 30088selector:
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-testlabels:name: nginx-test
spec:replicas: 2selector:name: nginx-testtemplate:metadata:labels: name: nginx-testspec:containers:- name: nginx-testimage: docker.io/nginxvolumeMounts:- mountPath: /usr/share/nginx/htmlname: nginx-data- mountPath: /etc/nginxname: nginx-etcports:- containerPort: 80volumes:- name: nginx-datapersistentVolumeClaim:claimName: nfs-data- name: nginx-etcpersistentVolumeClaim: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来实现。

在kubernetes集群中运行nginx相关推荐

  1. 在Serverless Kubernetes集群中轻松运行Argo Workflow

    导读 Argo是一个基于kubernetes实现的一个Workflow(工作流)开源工具,基于kubernetes的调度能力实现了工作流的控制和任务的运行. 目前阿里云容器服务ACK集群中已经支持工作 ...

  2. 在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)

    作者 | Addo Zhang 来源 | 云原生指北 在上一篇<在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(上)>中,我们使用 MetalLB 的 ...

  3. 从外部访问Kubernetes集群中的应用

    https://zhaohuabing.com/2017/11/28/access-application-from-outside/ 前言 我们知道,kubernetes的Cluster Netwo ...

  4. 在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(下)- BGP

    在上一篇<在 Kubernetes 集群中使用 MetalLB 作为 LoadBalancer(上)>中,我们使用 MetalLB 的 Layer2 模式作为 LoadBalancer 的 ...

  5. 想提高运维效率,那就把MySQL数据库部署到Kubernetes 集群中

    摘要:Kubernetes 很多看起来比较"繁琐"的设计的主要目的,都是希望为开发者提供更多的"可扩展性",给使用者带来更多的"稳定性"和& ...

  6. 如何调试Kubernetes集群中的网络延迟问题

    本文深入研究和解决了 Kubernetes 平台上的服务零星延迟问题,就在不久前我也遇到了类似的问题,看似是玄学事件,刚开始归结于网络链路抖动,一段时间后依然存在,虽然影响都是 P99.99 以后的数 ...

  7. Kubernetes集群中部署Node节点

    Kubernetes集群中的Node节点部署 kubernetes的Node节点包含如下组件: flanneld docker kubelet kube-proxy 环境变量 需要的变量. $ # 替 ...

  8. 调试Kubernetes集群中的网络停顿问题

    调试Kubernetes集群中的网络停顿问题 在过去几年,Kubernetes在GitHub已经成为标准的部署模式.目前在GitHub,我们在Kubernetes上运行着海量的面向内部团队以及面向C端 ...

  9. 从零到一编写一个 spark 程序并提交到集群中运行

    怎样用IDEA编写spark程序并提交到集群上运行 1.安装scala sdk 1.下载 scala 安装程序 #下载地址 https://www.scala-lang.org/download #w ...

最新文章

  1. 医院电脑瘫痪 病人排长队苦等5小时
  2. ue查找多个关键字_聊聊数据库GROUP BY关键字的那些事
  3. php删除excel文件,php操作excel文件的方法小结
  4. C#——Ellipse(椭圆)类[继承Circle(圆)类][实现IComparable接口、IComparerrT接口]DEMO
  5. PHP测试使用postman发送post请求,却报错此接口不支持get请求的原因
  6. 使用 litmus 验证内存重排
  7. win7双系统,暴力删除ubuntu后出现grub rescue解决
  8. CuteChat for Community Server 2.0 beta 3!
  9. 1.3 Shell脚本编程基础之条件测试
  10. 《Effective C#》读书笔记——条目23:理解接口方法和虚方法的区别使用C#表达设计...
  11. 简单了解一下ArcPy
  12. python工资条教程_批量发工资怎么操作_利用python轻松解决用邮箱批量发工资条...
  13. 软件测试技术——安全性测试
  14. Kali [Nmap]端口扫描工具
  15. Vue File Manager – PHP即时存储、共享和获取文件基于VUE v2.2.0.2
  16. 苹果app退款_苹果上最流氓的功能,终于被彻底关掉
  17. kali 改root_linux切换到root用户,kali怎么切换root身份运行
  18. docker-compose 搭建habor
  19. cad2016服务器为空,修改CAD2016的服务器地址
  20. 模拟信号超出频率范围

热门文章

  1. 面对这么多困境,梅耶尔还能怎么应对?
  2. 在阿里云上进行Docker应用的自动弹性伸缩
  3. 查看windosw服务器序列号,型号
  4. C++ WinForm Application Designer issue
  5. luogu_3966【题解】单词 AC自动机
  6. Windows Azure NotificationHub+Firebase Cloud Message 实现消息推动(付源码)
  7. c++ const static
  8. (转)MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...
  9. HDU 4917 Permutation(拓扑排序 + 状压DP + 组合数)
  10. 使用序列化实现对象的拷贝(转载)