k8s部署Nginx实现外部访问

k8s部署Nginx实现外部访问

1.准备k8s环境

[root@master yaml]# kubectl get nodes   ##两个节点均为Ready状态
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   3d8h   v1.18.1
node     Ready    <none>   3d8h   v1.18.1

2.检查主机上是否存在Nginx镜像

[root@master cicd]# docker images |grep nginx
172.16.181.12/library/nginx                                       latest              992e3b7be046        11 months ago       133MB

3.编写pod部署模板nginx-pod.yaml

[root@master yaml]# cat nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod		##pod名称
  labels:
    app: nginx    ###写上这个pod的标签,方便svc连接
spec:
  containers:
  - name: nginx-pod	##pod容器名称
    image: 172.16.181.12/library/nginx:latest		###镜像
    imagePullPolicy: IfNotPresent			###镜像拉取策略
    ports:
    - containerPort: 80			###容器端口

4.编写service部署模板文件nginx-svc.yaml

[root@master yaml]# cat nginx-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  selector:
    app: nginx			###关联容器标签
  ports:
  - port: 80			###容器端口
    nodePort: 30002		 ###nodeport映射为30002端口,便于外部主机访问
  type: NodePort		 ###svc类型为nodeport

5.kubectl命令执行模板文件

[root@master yaml]# kubectl apply -f nginx-pod.yaml 
pod/nginx-pod created
[root@master yaml]# kubectl apply -f nginx-svc.yaml 
service/nginx-svc created
[root@master yaml]# kubectl get pod
NAME        READY   STATUS    RESTARTS   AGE
mall        5/5     Running   0          8h
nginx-pod   1/1     Running   0          90s
[root@master yaml]# kubectl get svc
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes       ClusterIP   10.96.0.1       <none>        443/TCP        3d8h
nginx-svc        NodePort    10.111.24.115   <none>        80:30002/TCP   23s

6.浏览器访问ip:30002
在这里插入图片描述

### 在 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` 时,需确保节点的防火墙规则允许外部访问指定端口。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值