(二十)、从宿主机访问 k8s(minikube) 发布的 redis 服务

1、环境准备

Mac
安装好了 Docker Desktop
VC Code (安装了 k8s 拓展插件 ) 使用 minikube 运行k8s 集群

2、具体操作

2.1、启动 minikube (start/stop)

minikube start
minikube stop

minikube start <--driver=docker>
  • 另外一种方式
    这种方式,允许宿主机直接访问 集群 ip:nodeport 端口
minikube start --driver=virtualbox
  • 查看集群状态
➜  ~ kubectl cluster-info
Kubernetes control plane is running at https://127.0.0.1:62973
CoreDNS is running at https://127.0.0.1:62973/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

2.2、准备 redis-deployment.yaml

  • 创建一个 NodePort 类型的服务来暴露 Redis
  • 内容包含 redis 的 部署和服务配置信息,中间用 — 分割
  • 内容可以借助 VS Code,输入关键字 deployment 和 service 自动填充默认文本
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: redis:latest
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
          ports:
            - containerPort: 6379

---
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  type: NodePort
  selector:
    app: redis
  ports:
    - port: 6379
      targetPort: 6379
      nodePort: 30001 # 鉴于 30081 端口的特殊性,后期把这个端口修改为 30001,文本其余截图为历史截,故展示为 30081


2.3、执行 redis-deployment.yaml

redis-deployment.yaml 所在目录下执行

kubectl apply -f redis-deployment.yaml
2.3.1、查看 pod 信息和日志

在这里插入图片描述

kubectl get pods
kubectl logs <pod-name>

2.4、检查部署和服务状态

kubectl get deployments
kubectl get services
2.4.1、如果需要删除
kubectl delete deployment redis
kubectl delete service redis-service

3、查看 IP 的几个命令

3.1、查看IP的几个命令

注意,下面 redis-service 是我在 redis-deployment.yaml 已经自定义过的 service name

kubectl get nodes -o wide
kubectl get pods -o wide
kubectl get services -o wide
kubectl get svc
minikube service redis-service

这几个命令都是与Kubernetes集群管理和操作相关的,它们分别有不同的用途:

  • kubectl get nodes -o wide
    这个命令用于获取集群中所有节点的信息,并且使用 -o wide 参数来显示更多的列,比如节点的IP地址和其他详细信息。输出通常会包括节点名称、状态、年龄、版本等信息。
    在这里插入图片描述

  • kubectl get pods -o wide
    这个命令将会输出当前命名空间下的所有Pod,如果想要指定命名空间,可以加上–namespace=选项
    在这里插入图片描述

  • kubectl get services -o wide
    这个命令将会输出当前命名空间下的所有Service
    在这里插入图片描述

  • kubectl get svc
    这个命令用于列出集群中的所有服务(Service)。服务是在后端的一组Pods之上抽象的一个逻辑入口。输出将展示服务的名字、类型、端口、IP地址以及创建时间等信息

鉴于 30081 端口的特殊性,后期把这个端口修改为 30001,文本其余截图为历史截,故展示为 30081
在这里插入图片描述

  • minikube service redis-service
    这个命令是特定于minikube环境的,它不仅列出名为redis-service的服务,还会自动配置你的主机的浏览器或默认的服务访问工具来访问该服务。minikube是一个用来在本地快速部署单节点Kubernetes集群的工具。这个命令特别有用,因为它可以帮助开发者快速地检查服务是否正确暴露,并且可以立即测试服务。

鉴于 30081 端口的特殊性,后期把这个端口修改为 30001,文本其余截图为历史截,故展示为 30081
在这里插入图片描述

3.2、解读

在这里插入图片描述
在这里插入图片描述

鉴于 30081 端口的特殊性,后期把这个端口修改为 30001,文本其余截图为历史截,故展示为 30081

集群 minikube Node 节点 的内部 IP 是 192.168.58.2
redis 对应的 pod 的内部ip是10.244.0.12,我们配置的端口映射为 6379->6379
NodePort 服务的内部IP是 10.108.141.181,我们配置的端口映射为 30081->6379
宿主机通过 http://127.0.0.1:57407 的端口 57407 映射到 NodePort 的 30081 端口

3.3、宿主机连接 k8s 部署的 redis

本文使用的方式借助 Docker 驱动程序,如果使用 VirtualBox 方式,则可以宿主机直接通过 http://<minikube-ip>:<node-port>进行请求

通过宿主机:隧道端口进行请求
http://127.0.0.1:57407
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值