小橘子大叔

  • 首页
  • nginx
  • Linux
  • docker
  • Kubernetes
  • Prometheus
  • 生活
  • 文章归档
  • 友情链接
  • Instagram
  • TikTok
  • X
欢迎随时联系本人
  • Mail

k8s下部署nginx集群

  • luxy
  • 2023-09-26
  • 8

      在这个实验中,我们需要用到一下几个yaml文件(除开endpointslice和recommend?)

大致的架构图如下:

1.创建pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim1
  namespace: dev
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nginx1

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim2
  namespace: dev
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nginx2

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim3
  namespace: dev
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nginx3

2.创建pv,与pvc进行绑定

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  storageClassName: nginx1
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.239.100
    path: /root/data/pv1

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv2
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  storageClassName: nginx2
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.239.100
    path: /root/data/pv2

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv3
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany
  storageClassName: nginx3
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.239.100
    path: /root/data/pv3

3.创建deployment和service,其实在昨天学到了可以管理有状态的statefulset控制器,它可以让个Pod都附加到其自己的持久化存储卷,而不像是deployment一样共享一个存储卷哈哈哈

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment1
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      nodeName: node1
      containers:
        - name: nginx
          image: nginx:1.17.1
          ports:
            - containerPort: 80
          volumeMounts:
            - name: config
              mountPath: /usr/share/nginx/html/
              readOnly: false
            - name: myclaim1
              mountPath: /var/log/nginx/
              readOnly: false
      volumes:
        - name: config
          configMap:
            name: configmap
        - name: myclaim1
          persistentVolumeClaim:
            claimName: myclaim1

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment2
  namespace: dev
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      nodeName: node2
      containers:
        - name: nginx
          image: nginx:1.17.1
          ports:
            - containerPort: 80
          volumeMounts:
            - name: config
              mountPath: /usr/share/nginx/html/
              readOnly: false
            - name: myclaim2
              mountPath: /var/log/nginx/
              readOnly: false
      volumes:
        - name: config
          configMap:
            name: configmap
        - name: myclaim2
          persistentVolumeClaim:
            claimName: myclaim2

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: dev
spec:
  selector:
    app: nginx-pod
  clusterIP: None
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 80

4. 创建ingress,ingress可看作7层的负载均衡器,用于将来自集群外部的HTTP和HTTPS流量路由到集群内的特定服务。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-http
  namespace: dev
spec:
  rules:
    - host: nginx-http
      http:
        paths:
          - path: /
            backend:
              serviceName: nginx-service
              servicePort: 80

5.创建configmap,导入前端文件(主要功能还是自定义配置文件,我只是测试来玩一下啦)

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap
  namespace: dev
data:
  index.html: |
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title></title>
    </head>
    <body>
      <div style="font-size: 30px; font-weight: bold; font-style: italic; color: blue; background-color: cyan; padding: 10px; border: 2px solid blue; border-radius: 10px;" align="center">
        新用户注册 <br><br>
        <form name="form1" id="form1">
          用户名 &nbsp;&nbsp;&nbsp;&nbsp;<input name="userName" id="userName" type="text" value="请输入用户名" maxlength="12">
          <br>密码 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="pwd" id="pwd" type="password" maxlength="12" placeholder="请输入密码">
          <br>重复密码 &nbsp;<input name="pwd" id="pwd" type="password" maxlength="12" placeholder="重复密码">
          <br>性别 ><input name="sex" id="sexm" type="radio" value="1" >男
          <input name="sex" id="sexw" type="radio" value="0" checked="fucker">女
          <br>出生日期 <input type="date" name="birth" id="birth">
          <br>手机号码 <input name="fav" id="fav1" type="tel" maxlength="12">
          <br>邮件 <input name="fav" id="fav2" type="email">
          <br>爱好 <input name="fav" id="fav3" type="checkbox" checked="fucker"><input type="checkbox" checked="fucker"><input type="checkbox" checked="fucker">
          <br>学历 <select name="gra" id="gra">
            <option value="">博士</option> <option value="" selected="set">学士</option><option value="">硕士</option><option value="">博士</option> <option value="" selected="set">小学</option><option value="">幼儿园</option>
          </select>
          <select name="pri" id="pri">
            <br>家庭地址 <br>省份 <select name="" id="">
              <option value="">四川省</option> <option value="">河北省</option> <option value="">河南省</option>
              <option value="">江西省</option>
            </select>
            市  <select name="" id="">
              <option value="">成都市</option><option value="">自贡市</option><option value="">德阳市</option><option value="">巴中市</option>
            </select>
          </select>
          <input type="reset">
        </form>
      </div>
    </body>
    </html>

6.部署dashboard,监控集群
详情看部署和访问 Kubernetes 仪表板(Dashboard) | Kubernetes

© 2025 小橘子大叔
Theme by Wing
  • {{ item.name }}
  • {{ item.name }}