使用K8S部署nginx

本文详细介绍了如何使用Docker导入基础镜像、编写部署文件,并通过Kubernetes进行Nginx服务的部署。从Docker保存与加载镜像、测试镜像功能到编写Kubernetes的部署文件,最后通过kubectl命令完成部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入Base image

从已有项目拷贝 nginx base image
docker save -o nginx.tar.gz  nginx:xxxx

docker load -i nginx.tar.gz
docker push nginx:xxxx
docker tag nginx:xxxx nls-nginx:19.5
测试镜像是否正常工作:
#使用内置的 start-nginx.py 部署nginx
docker run --name nginx-nls -d -p 8080:80 nls-nginx:19.5
#手动启动 nginx要设置 ‘daemon off’
docker run --name nginx-nls -d -p 8080:80 localhost:5000/nls- nginx:vNLS.5G.19.5.3 nginx -g ‘daemon off;’ -c /etc/nginx/conf/nginx.conf

编写部署文件

nginx-rc.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-lb-1
spec:
replicas: 1
selector:
matchLabels:
app: nginx-lb-1
template:
metadata:
labels:
app: nginx-lb-1
component: nls-nginx-lb
spec:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
containers:
- name: nginx
image: nls-nginx:19.5
securityContext:
privileged: true
command:
- /start-nginx.py
- --nginx-conf
- /etc/nginx/conf/nginx.conf
- --grace-signal
- SIGTERM
- --log-file
- /var/log/nginx/start-nginx-lb.log
- --log-level
- INFO
volumeMounts:
- name: logdir
mountPath: /var/log/nginx
volumes:
- name: logdir
hostPath:
path: /opt/nls/nls_run/log
- name: crash-dir
hostPath:
path: /var/crash

部署

		kubectl create -f nginx-rc.yaml
		kubectl delete deployment nginx-lb-1 
### 在 Kubernetes 集群中部署 Nginx 的方法 在 Kubernetes (k8s) 集群中部署 Nginx,可以通过创建一个 Deployment 来实现,并结合 Service 提供网络访问能力。以下是完整的步骤和配置文件示例。 #### 1. 创建 Nginx Deployment 使用以下 YAML 文件定义 Nginx 的 Deployment。此配置文件包含挂载主机路径的功能,以便自定义 Nginx 配置文件和网站根目录[^1]。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:latest name: nginx volumeMounts: - name: conf mountPath: /etc/nginx - name: opt mountPath: /opt volumes: - name: conf hostPath: path: /etc/nginx type: Directory - name: opt hostPath: path: /opt type: Directory ``` #### 2. 创建 Nginx Service 为了使 Nginx 可以被外部访问,需要创建一个 Service。可以使用 `ClusterIP` 或 `NodePort` 类型的 Service。以下是一个示例配置文件[^3]: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort ports: - name: http port: 80 protocol: TCP targetPort: 80 nodePort: 30003 selector: app: nginx ``` #### 3. 应用配置文件 将上述两个 YAML 文件保存为 `nginx-deployment.yaml` 和 `nginx-service.yaml`,然后通过以下命令应用到 Kubernetes 集群中[^2]: ```bash kubectl apply -f nginx-deployment.yaml kubectl apply -f nginx-service.yaml ``` #### 4. 检查状态 部署完成后,可以通过以下命令检查 Deployment 和 Service 的状态: ```bash kubectl get deployments kubectl get pods kubectl get services ``` 如果一切正常,Nginx 将运行在 Kubernetes 集群中,并可以通过指定的 `NodePort` 访问。 --- ### 注意事项 - 如果需要挂载自定义配置文件或数据目录,可以在 `volumeMounts` 中添加相应的挂载路径[^1]。 - 确保主机路径 `/etc/nginx` 和 `/opt` 存在并包含正确的配置文件和数据[^1]。 - 使用 `NodePort` 时,需确保节点的防火墙规则允许外部访问指定端口。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值