阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在Kubernetes集群中运行Nginx

154次阅读
没有评论

共计 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

在 Kubernetes 集群中运行 Nginx
在 Kubernetes 集群中运行 Nginx

4、在 nfs 服务器上创建测试 html 文件

# echo ‘Hello, Welcome to my website…’ > /home/index.html

在 Kubernetes 集群中运行 Nginx
在 Kubernetes 集群中运行 Nginx

二、配置 nginx 配置文件持久化
我们需要在前面网页文件持久化的基础上把 nginx 配置文件和日志文件也进行持久化
1、创建 PVC,其中 nfs-data 存储网页文件,nfs-nginx-etc 存储配置文件和日志文件

在 Kubernetes 集群中运行 Nginx
在 Kubernetes 集群中运行 Nginx

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

在 Kubernetes 集群中运行 Nginx

通过在对应的 node 节点上 inspect docker 容器验证

在 Kubernetes 集群中运行 Nginx

4、通过访问网页,发现 nginx 的 server_token 为开启状态

在 Kubernetes 集群中运行 Nginx

5、这里我们通过修改 error_log 和 access_log 到 nfs 路径下,同时将 server_token 修改为 off

在 Kubernetes 集群中运行 Nginx

6、重启 nginx 使配置文件
通过将 rc 的副本数重新设置为 0 后,再将副本数设置为 2,达到重启 nginx 的效果。
当然这里也可以通过 kubectl exec 的方式进行。

在 Kubernetes 集群中运行 Nginx

7、验证
验证 server_token 已经成功关闭

在 Kubernetes 集群中运行 Nginx

验证在 nfs server 上能看到 nginx 的访问日志,证明配置文件修改成功。

在 Kubernetes 集群中运行 Nginx

在生产环境中,nginx 服务的发布需要考虑使用 ingress,nginx 配置文件应当首先考虑使用 configmap 来实现。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2126字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中