• 使用Port Forwarding连接k8s集群的pod(redis、mysql等)


    一. 创建Redis的deployment和service

    1. 创建Redis deployment

      redis-master-deployment.yaml 

    apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
    kind: Deployment
    metadata:
      name: redis-master
      labels:
        app: redis
    spec:
      selector:
        matchLabels:
          app: redis
          role: master
          tier: backend
      replicas: 1
      template:
        metadata:
          labels:
            app: redis
            role: master
            tier: backend
        spec:
          containers:
          - name: master
            image: k8s.gcr.io/redis:e2e  # or just image: redis
            resources:
              requests:
                cpu: 100m
                memory: 100Mi
            ports:
            - containerPort: 6379

    执行:

    kubectl create -f redis-master-deployment.yaml

    查看执行结果:

    deployment "redis-master" created
    当 pod 是 ready 时,将得到:
    
       kubectl get pods
    
        NAME                            READY     STATUS    RESTARTS   AGE
        redis-master-765d459796-258hz   1/1       Running   0          50s
    
       kubectl get deployment
    
        NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
        redis-master 1         1         1            1           55s
    
       kubectl get rs
    
        NAME                      DESIRED   CURRENT   READY     AGE
        redis-master-765d459796   1         1         1         1m

    2. 创建redis service

       redis-master-service.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: redis-master
      labels:
        app: redis
        role: master
        tier: backend
    spec:
      ports:
      - port: 6379
        targetPort: 6379
      selector:
        app: redis
        role: master
        tier: backend

    执行:

    kubectl create -f redis-master-service.yaml

    查看结果:

    service "redis-master" created

    3. 验证 Redis 服务是否运行在 pod 中并且监听 6379 端口:

    kubectl get pods redis-master-765d459796-258hz –template=‘{{(index (index .spec.containers 0).ports 0).containerPort}}{{”
    ”}}’

    输出:

    6379

    二、转发一个本地端口到Pod端口

    1. 从 Kubernetes v1.10 开始,kubectl port-forward 允许使用资源名称(例如服务名称)来选择匹配的 pod 来进行端口转发。

    kubectl port-forward redis-master-765d459796-258hz 6379:6379

    相当于:

    kubectl port-forward pods/redis-master-765d459796-258hz 6379:6379

    kubectl port-forward deployment/redis-master 6379:6379

    kubectl port-forward rs/redis-master 6379:6379

    kubectl port-forward svc/redis-master 6379:6379

    以上的命令都有效,输出类似于:

    I0710 14:43:38.274550    3655 portforward.go:225] Forwarding from 127.0.0.1:6379 -> 6379
    I0710 14:43:38.274797    3655 portforward.go:225] Forwarding from [::1]:6379 -> 6379

    2. 启动 Redis 命令行接口:

    redis-cli

    在 Redis 命令行提示符下,输入 ping 命令:

    127.0.0.1:6379>ping

    提示ping成功

    与本地 6379 端口建立的连接将转发到运行 Redis 服务器的 pod 的 6379 端口。通过此连接,可以使用本地工作站来调试在 pod 中运行的数据库。

  • 相关阅读:
    c#异步执行方法
    sql 增加、修改、删除触发器小例子
    c#解决高并发加锁(Lock)
    sql中写事物和c#中执行事物
    socket 服务器浏览器与服务器客户端实例
    c# 写txt
    vs2003 序列化json
    一个完整的Windows 服务从创建到安装卸载
    js封装长度验证
    jquery 右下角弹出框
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/11897868.html
Copyright © 2020-2023  润新知