谷歌 k8s 怎么访问虚拟机里面的自己搭建的 redis?-灵析社区

脑袋困掉惹

谷歌 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 实例](https://link.segmentfault.com/?enc=T3RTc%2BljVHd2FFt6t%2FS2Iw%3D%3D.P0m9GBLfrEkq2o4weWqNeEnSuLclYXMzMRZlBXetBUXDWn1f68ZnPjNeYYjXqEG2Bj41kZF2gomVx6aI544tAOSjlVX5zMcNF2qO07%2F2UWiS%2BcnNfppc187%2BAGYDdWpO) 但是这个教程太复杂了,还需要使用 gcloud 创建 redis 实例?用 docker 跑的 redis 还不行? > 上面的链接好像是谷歌自己的 memorystore for redis,而不是真的 redis

阅读量:132

点赞量:0

问AI
特地花了几块钱开了一下GKE和VM。 这里用了一个全新的命名空间操作的。 1. 内网第一步: VPC 走内网的前提是 需要在同一个VPC下 我这里用的默认VPC,这里以 default 网络下的 us-central1 来作为实验的例子。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/e1fa6c84b3dbbe484f9aa538581f6dac.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/8208296cb14970107ddad52bb6d90b08.png) 2. 创建一个 redis VM 实例,注意这里的 region 和网络接口配置。 在us-central1下创建一个VM "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/a478e69895c25f7c28d7a1e49ea0c5ce.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/7f24acb470cb91f9d59065497b66a766.png) 在虚拟机里安装了redis,同时可以看到这个VM的内网IP为:10.128.0.2,和上面的子网一致。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/3a2efbb23e80b1e6f26dafe32f7c673a.png) 3. 准备一个GKE集群 注意,这里创建集群的时候,还是要在一个 region 里。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/60c0718c116865172d76a73dee935848.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/e9c50d14aec8348dad3d801af10c4e10.png) 正在部署集群,这里的region和redis vm的一致。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/5e7ee7eda92cf986f503c23af2bd0d59.png) 4. 创建两个测试用的Pod "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/f509e663df110a0a46e6f00ea332cca0.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/737ac345f7dd071f60b3084a701bf227.png) 这里发现端口不通 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/735859fccb1492ef6da51a7e99d8c2c9.png) 但是能ping通 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/dded6d99d716115a170919d2cbda6106.png) 5. 检查防火墙策略 添加这行规则,允许10.0.0.0/8 访问10.128.0.2:6379 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/0b8ddc0f42400fc480ab5c938d582977.png) 测试可以在容器内正常连接redis "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/69d10677ad3a32776cfffae5647e6ff9.png) *** 唯一的坑就是在防火墙的配置里,花了很多时间,也发现一个奇怪的问题。 这里的优先级按照习惯,都是设置在中间的一个值,我测试的时候写的是 2000,可是发现怎么也不生效。经过不断的测试,发现默认生成的1003-1005,会把它阻止掉。所以我这里优先级设置了200。 操作其实也其他的云也差不多。 所以GKE和VM走内网互通是完全没啥问题的。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/789357910b9875d68fa6d07afc86394b.png)