• Minikube 基础操作2:应用操作


    发布应用

    1、通过 kubectl 发布服务

    1. 创建服务

    kubectl create deployment hello-minikube1 --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10

    2. 暴露端口

    kubectl expose deployment hello-minikube1 --type=LoadBalancer --port=8000

    3. 查看映射端口

    export PORT=$(kubectl get svc hello-minikube1 -o go-template='{{range.spec.ports}}{{if .nodePort}}{{.nodePort}}{{"\n"}}{{end}}{{end}}')

    # 查看端口

    echo $PORT

    4. 访问端口

    minikube service hello-minikube1

    5. 删除服务

    kubectl delete deployment -n default hello-minikube1 --force --grace-period=0

    2、通过 Addons 管理插件

    Minikube 自带了一个内置应用列表,包括诸如 Istio、Ingress 等,可以方便快速部署插件。

    1. 查询插件列表

    minikube addons list

    输出如下: 

    2. 启用指定插件

    minikube addons enable [addon name]

    3. 同时启用多个插件

    minikube start --addons [addon name] --addons [addon name]

    4. 在浏览器打开插件暴露出的endpoint 

    minikube addons open [addon name]

    5. 停用指定插件

    minikube addons disable [addon name]

    访问应用

    1、NodePort 方式访问

    NodePort 方式是访问服务最基础的方式,顾名思义,就是将端口映射到本地,并通过本地的 IP + 映射的端口访问服务放出的 endpoint,这种方式下,服务会共用 VM 的 IP。

    1. 使用service命令访问 endpoint

    minikube 内置的 service 命令可以快速访问服务放出的endpoint,并在浏览器中打开

    minikube service --url [service-name]

    2. 使用 kubectl 获取 nodePort 端口

    通过minikube ip 命令可以获取到虚拟机的IP地址,执行以下命令,可以获取到服务映射的 nodePort 端口

    kubectl get service  --output='jsonpath="{.spec.ports[0].nodePort}"'

    3. 扩展 NodePort 的范围

    一般来说,minikube 包括的端口范围为 30000-32767,如果不够的话,可以通过如下命令进行扩展

    minikube start --extra-config=apiserver.service-node-port-range=1-65535

    2、LoadBalancer 方式访问

    LoadBalancer 方式,是将服务暴露到公网中的标准方法,使用这种方法,每一个服务都有其独立的IP。

    以 LoadBalancer 方式暴露的服务需要通过 minikube tunnel 命令访问,并且必须在一个独立的终端窗口保持 LoadBalancer 运行,使用 Ctrl-C 可以退出进程,但是相关的路由信息将会被情况

    1. 使用 minikube tunnel

    在独立的终端运行 tunnel,它会在k8s的CIDR中新增路由规则,将集群的IP地址作为网关,tunnel 命令会将服务的外部访问IP直接暴露给主机操作系统上运行的所有程序。

    minikube tunnel

    2. 创建一个deployment

    kubectl create deployment hello-minikube --image=registry.cn-hangzhou.aliyuncs.com/google_containers/echoserver:1.10

    检查服务:

    kubectl get pod

    3. 创建LB服务,暴露服务

    kubectl expose deployment hello-minikube --type=LoadBalancer --port=8000

    tunnel 终端窗口会弹出:

    service/hello-minikube exposed

    4. 查看外部访问IP

    kubectl get svc

    正常返回如下:

    注意: 如果没有开启minikube tunnel 窗口的话,服务的 EXTERNAL-IP 将会显示 pending

    5. 在浏览器中访问服务(通过IP:Port)

    打开浏览器,访问http://127.0.0.1:8000,(确保服务没有proxy设置)

     

    总结

    使用create deployment的方式创建的服务,然后使用LoadBalancer对服务进行暴露,才能给到外部进行访问。访问可以使用NodePort和LoadBalancer两种访问方式

     

  • 相关阅读:
    佳期投资专场——第321场LeetCode周赛题解
    Pytorch:BatchNorm1d、BatchNorm2d、BatchNorm3d
    七天.NET 8操作SQLite入门到实战 - 第三天SQLite快速入门
    简单工作量评估方法
    MySQL底层知识总结
    vscode 配置网址
    三、使用 Maven:命令行环境
    (论文翻译)UFO: Unified Feature Optimization——UFO:统一特性优化
    golang的垃圾回收算法之九写屏障
    uni-app 超详细教程(三)(从菜鸟到大佬)
  • 原文地址:https://blog.csdn.net/m290345792/article/details/126772294