谷歌 k8s 怎么访问虚拟机里面的自己搭建的 redis?
我在 谷歌的虚拟机,用 docker 和 docker-compose 自己起了一个 redis
version: "3"services: redis: container_name: redis restart: always image: redis:7.2.4-bookworm ports: - "6379:6379" volumes: - ./volumes:/data - ./redis.conf:/etc/redis/redis.conf command: redis-server /etc/redis/redis.conf --requirepass 543cm7U7ecMv
现在部署在谷歌 k8s 的 pod 需要访问这个虚拟机中的 redis,我希望可以走内网
但是我知道怎么做?找到了一个教程:从 Google Kubernetes Engine 集群连接到 Redis 实例 但是这个教程太复杂了,还需要使用 gcloud 创建 redis 实例?用 docker 跑的 redis 还不行?
上面的链接好像是谷歌自己的 memorystore for redis,而不是真的 redis
一般pod访问外部网络的路径是:pod ip -- pod所在k8s节点的ip --- 目的ip,所以你这里只需要把k8s节点的ip和redis所在节点ip的网络打通就可以了,这里面就要看你的k8s节点和redis节点是不是在同一个vpc里面了,如果是同一个vpc默认网络就是通的,如果是不同的vpc,那你就要配置路由将2个vpc打通。
特地花了几块钱开了一下GKE和VM。
这里用了一个全新的命名空间操作的。
唯一的坑就是在防火墙的配置里,花了很多时间,也发现一个奇怪的问题。
这里的优先级按照习惯,都是设置在中间的一个值,我测试的时候写的是 2000,可是发现怎么也不生效。经过不断的测试,发现默认生成的1003-1005,会把它阻止掉。所以我这里优先级设置了200。
操作其实也其他的云也差不多。
所以GKE和VM走内网互通是完全没啥问题的。
在谷歌 Kubernetes Engine (GKE) 中访问虚拟机 (VM) 上运行的 Redis 实例,你需要确保以下几个条件满足:
由于你已经用 Docker 在 VM 上搭建了 Redis,并且端口映射到了宿主机上,现在需要做的是配置网络,以便 GKE 集群可以访问这个 Redis 实例。
以下是一些步骤,帮助你实现这个目标:
首先,检查 GKE 集群和 VM 是否在同一网络中。如果是,它们应该可以通过内部 IP 地址通信。如果不在同一网络,你可能需要设置 VPCPeering 或 VPN 连接。
在 VM 上,确认 Redis 服务正在运行,并且监听在正确的端口上。你可以使用 netstat
或 redis-cli
来检查。
netstat -tuln | grep 6379
确保 Google Cloud 的防火墙规则允许 GKE 集群的 Pod IP 范围访问 VM 上的 Redis 端口(6379)。你可以通过 Cloud Console 或 gcloud
命令行工具来配置这些规则。
在 GKE 集群的 Pod 中,你可以使用 Redis 的 IP 地址和端口来访问它。如果你的 Redis 实例配置了密码,你还需要在连接字符串中包含密码。
这里是一个 Python 的示例,展示了如何在 Pod 中使用 redis-py
客户端来连接 Redis:
import redis# Redis 实例的 IP 地址和端口REDIS_HOST = '你的VM的IP地址'REDIS_PORT = 6379REDIS_PASSWORD = '你的Redis密码'# 创建 Redis 客户端r = redis.Redis( host=REDIS_HOST, port=REDIS_PORT, password=REDIS_PASSWORD, decode_responses=True)# 使用 Redisr.set('foo', 'bar')value = r.get('foo')print(value) # 输出: 'bar'
如果你的 Redis 实例是集群的一部分,或者你想要更优雅地处理服务发现,你可以考虑使用 Kubernetes 的 Service 和 Endpoint 对象来抽象 Redis 实例的位置。
最后,尽管教程中提到了使用 Google Memorystore for Redis,但这并不是必须的。你可以直接使用自己搭建的 Redis 实例,只要网络配置正确,GKE 集群中的 Pod 就应该能够访问它。
如题,虽然官方未出api,但看到还是挺多人对此封装了api,是怎么实现的呢? 广告请绕路哈~
我在本地机器(Mac)上工作,其中有一个名为sqlvm的遗留虚拟机(这意味着我可以通过http://sqlvm:从本地主机访问这个虚拟机)。现在,我在应该连接到vm的同一个本地主机(我的Mac)中设置了几个docker容器(使用docker-compose)。< code>pymysql会引发一个异常: 如何将外部的“sqlvm”公开给内部 Docker 网络? 编辑:我尝试在yml文件中为相关容
浏览了Google云数据流文档后,我的印象是worker VM运行一个特定的预定义Python 2.7环境,没有任何改变的选项。是否可以为工作人员提供自定义VM映像(使用库、特定应用程序需要的外部命令构建)。可以在Gcloud数据流上运行Python 3吗?
本文向大家介绍使用xampp搭建运行php虚拟主机的详细步骤,包括了使用xampp搭建运行php虚拟主机的详细步骤的使用技巧和注意事项,需要的朋友参考一下 最近,新装了xampp这么一个软件搭建自己的web开发环境,安装完毕自然要虚拟几个目录放自己的项目了,现将如何在xampp搭建的web服务器环境下新建虚拟主机的过程总结分享一下,大致过程分为三步,如下: 第一步: 用记事本打开C:/WINDOW
创建一台 Linux 系统的虚拟机,Linux 系统的类型选择的是 CentOS 7.x 。 创建项目 每个项目都在各自的文件夹里,你可以为每个项目单独去创建虚拟机。打开命令行工具,先为项目创建一个文件夹: cd ~/desktop mkdir awesome-project cd awesome-project 上面执行的命令就是在命令行下面,先进入到当前登录用户的桌面(desktop)上,在
我正在使用ubuntu 11.10,并在不同的ip上安装了不同的虚拟主机,如 我想在IE9中测试这些网站,为此,我在oracle虚拟框中安装了windows7,还修改了windows7host文件,并在文件末尾添加了此行10.0.2.2 localhost,还创建了一个新的适配网桥 完成所有这些设置后,我可以从windows7访问ubuntu的localhost,但在访问ubuntu的虚拟主机时发