K8S--安装Nginx

原文网址:K8S--安装Nginx-CSDN博客

简介

本文介绍K8S安装Nginx的方法。

1.创建Nginx目录及配置文件

mkdir -p /work/devops/k8s/app/nginx/{config,html}

在config目录下创建nginx.conf配置文件,内容如下:

bash 复制代码
# events必须要有
events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    #日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" $http_x_forwarded_for';
    #日志的路径
    access_log  /var/log/nginx/access.log  main;

    sendfile  on;

    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;

    server{
        # 监听的端口
        listen 80;
        server_name _;
        root /usr/share/nginx/html/;
        index index.html;
    }
}

在html目录下创建index.html,内容如下:

bash 复制代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>K8S搭建nginx</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

2.编写K8S配置文件

此配置文件用于创建Namespace、Deployment、Service。

  • Namespace:命名空间,用于区分应用。
  • Deployment:用于生成pod。
  • Service:用于将pod暴露到集群中,供其他pod或者外部访问。

到/work/devops/k8s/app/nginx/路径下,创建名为k8s.yaml的配置文件

bash 复制代码
# 创建命名空间,Deployment和Service中要引用。
apiVersion: v1
kind: Namespace
metadata:
  name: middle
  labels:
    name: middle
---
# 创建Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: middle
  labels:
    app: nginx
spec:
  # 副本的数量
  replicas: 1
  selector:
    # 选择app=nginx的Pod
    matchLabels:
      app: nginx
  # 选择或创建的Pod的模板
  template:
    metadata:
      labels:
        app: nginx
    spec:
      # 容器的路径
      containers:
        - image: nginx:latest
          name: nginx-latest
          ports:
            - containerPort: 80
              name: nginx-80
          # 容器内的路径
          volumeMounts:
            - name: config
              mountPath: /etc/nginx/nginx.conf
            - name: config-include
              mountPath: /etc/nginx/conf.d/
            - name: log
              mountPath: /var/log/nginx/
            - name: html
              mountPath: /usr/share/nginx/html/
            - name: cert
              mountPath: /etc/nginx/cert/
      # 主机的路径
      volumes:
        - name: config #和volumeMounts中的内容要对应
          hostPath:
            path: /work/devops/k8s/app/nginx/config/nginx.conf
            type: File
        - name: config-include #和volumeMounts中的内容要对应
          hostPath:
            path: /work/devops/k8s/app/nginx/config/conf.d/
            type: DirectoryOrCreate
        - name: log #和volumeMounts中的内容要对应
          hostPath:
            path: /work/devops/k8s/app/nginx/logs/
            type: DirectoryOrCreate
        - name: html #和volumeMounts中的内容要对应
          hostPath:
            path: /work/devops/k8s/app/nginx/html/
            type: DirectoryOrCreate
        - name: cert #和volumeMounts中的内容要对应
          hostPath:
            path: /work/devops/k8s/app/nginx/cert/
            type: DirectoryOrCreate
---
# 创建Service
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: middle
  labels:
    app: nginx
spec:
  ports:
    - name: nginx-port
      port: 8000   # Service监听的端口
      targetPort: 80  # nginx自身暴露的端口。对应Deployment的containerPort
      # 对外的端口号
      nodePort: 30003
  selector:
    app: nginx
  # NodePort类型可以对外暴露端口
  type: NodePort

3.启动Nginx

到/work/devops/k8s/app/nginx/路径下,执行此命令:

bash 复制代码
kubectl apply -f k8s.yaml

结果:

4.查看启动结果

法1:通过dashboard查看

法2:通过命令查看

bash 复制代码
kubectl get pods -A

结果:

bash 复制代码
kubectl get services -A

结果

4.访问Nginx

测试1:外部访问NodePort

访问:ip:nodePort端口号

测试2:访问集群

bash 复制代码
curl 10.100.95.158:8000

结果:

测试3:访问容器内部

先进入容器内部,再访问容器端口。

1.找到pod的名字

bash 复制代码
kubectl get pods -A

结果:

2.进入容器内部

bash 复制代码
kubectl exec nginx-deployment-557c7b98b6-8l5r5 -n middle -it -- bash

结果:

3.访问Nginx

bash 复制代码
curl localhost:80

结果

备注:可以通过Ctrl+D退出。

5.删除Nginx

到/work/devops/k8s/app/nginx/路径下,执行此命令:

bash 复制代码
kubectl delete -f k8s.yaml

结果:

相关推荐
年薪丰厚1 小时前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
KubeSphere 云原生1 小时前
云原生周刊:利用 eBPF 增强 K8s
云计算·k8s·容器平台·kubesphere
橙子家19 小时前
关于 K8s 的一些基础概念整理-补充【k8s系列之五】
k8s
于顾而言3 天前
【Enjoy Kubernetes】1. 基础入门
开发语言·云原生·k8s
roshy3 天前
POD 存储、PV、PVC
docker·k8s·pod
qq_338032923 天前
k8s总结
云原生·容器·kubernetes·k8s
KubeSphere 云原生4 天前
云原生周刊:Kubernetes v1.32 正式发布
云计算·k8s·容器平台·kubesphere
TiDB_PingCAP4 天前
知乎 PB 级别 TiDB 数据库集群管控实践
k8s·tidb·tidb operator
KubeSphere 云原生4 天前
拒绝 Helm? 如何在 K8s 上部署 KRaft 模式 Kafka 集群?
云计算·k8s·容器平台·kubesphere
年薪丰厚4 天前
如何查看K8S集群中service和pod定义的网段范围
docker·云原生·容器·kubernetes·k8s