gpt4 book ai didi

docker - 通过节点端口i访问应用程序时未获取更改

转载 作者:行者123 更新时间:2023-12-02 12:14:33 27 4
gpt4 key购买 nike

我正在使用minikube

我的部署文件

apiVersion: apps/v1
kind: Deployment
metadata:
name: phpdeployment
spec:
replicas: 3
selector:
matchLabels:
app: phpapp
template:
metadata:
labels:
app: phpapp
spec:
containers:
- image: rajendar38/myhtmlapp:latest
name: php
ports:
- containerPort: 80

ingress
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
spec:
backend:
serviceName: php-service
servicePort: 80

this is my service
apiVersion: v1
kind: Service
metadata:
name: php-service
spec:
selector:
app: phpapp
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 31000
type: NodePort

我可以访问的简单php应用程序,我构建了docker镜像
两种方式
  • http://192.168.99.100/test.html
  • http://192.168.99.100:31000/test.html

  • 之后,我:
  • 更新了我的PHP应用程序
  • 再次创建镜像,并推送到Docker Hub
  • 删除了所有资源
  • kubectl全部删除--all
  • 然后强制应用部署和服务

  • 但是使用节点端口方式,我可以访问旧应用程序。但是通过Ingress方式,我可以访问更改

    最佳答案

    请看看类似的problem

    您必须知道容器端口是容器监听的端口。服务端口是kubernetes服务在群集内部ip上公开并映射到容器端口的端口。 Nodeport是主机上公开的端口,并映射到kubernetes服务。

    通过NodePort,您可以通过在服务类型中指定该值来公开该服务。另一方面,Ingress是对您的服务完全独立的资源。您单独声明,创建和销毁服务。
    由于服务类型NodePort,您可以公开两个端口(31000、80)。

    您的配置文件应类似于:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: phpdeployment
    spec:
    replicas: 3
    selector:
    matchLabels:
    app: phpapp
    template:
    metadata:
    labels:
    app: phpapp
    spec:
    containers:
    - image: rajendar38/myhtmlapp:latest
    name: php
    command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
    ports:
    - containerPort: 80
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: example-ingress
    annotations:
    ingress.kubernetes.io/rewrite-target: /
    spec:
    rules:
    - http:
    paths:
    - path: /example
    backend:
    serviceName: php
    servicePort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: php
    spec:
    selector:
    app: php
    ports:
    - port: 31000
    targetPort: 80
    protocol: TCP
    name:
    type: NodePort

    然后公开部署:
    $ kubectl expose deployment phpdeployment --type=NodePort

    官方文档: kubernetes-service-nodeportkubernestes-ingresskubernetes-deployment-exposing

    关于docker - 通过节点端口i访问应用程序时未获取更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672529/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com