Kubernetes中如何使用外部有状态服务,比如:MySQL、Redis等

一、需求

在工作中,总会遇到这种情况:k8s环境中跑着各种程序接口,有状态服务如mysql,部署在物理机上,那么如果此时,程序接口需要访问数据库,一般有如下几种方式:* 通过设置程序部署文件中的 HostAliases 字段,来解析到数据库地址。(不建议,如果应用程序较多,需要每个程序部署文件都要指定 HostAlias)
* 手动创建无头服务及endpoint,引入外部数据库,然后通过k8s集群中的域名解析服务访问,访问的主机名格式为:[svc_name].[namespace_name].svc.cluster.local。
* 通过k8s中service的externel name功能实现,具体实现方法暂时没研究,后续补充。

二、通过无头服务实现

个人推荐使用无头服务,使用传统的
        假设我这里外部 mysql 地址为:192.168.181.147:3306,那么对应的 svc 及 endpoint 配置文件 mysql.yaml 如下:

apiVersion: v1
kind: Service
metadata:name: mysqlnamespace: default
spec:clusterIP: Noneports:- name: mysqlport: 3306protocol: TCPtargetPort: 3306type: ClusterIP---
apiVersion: v1
kind: Endpoints
metadata:name: mysqlnamespace: default
subsets:
- addresses:- ip: 192.168.181.147ports:- name: mysqlport: 3306protocol: TCP# 创建service及endpoint # kubectl apply -f mysql.yml

查看创建的 svc 及 endpoint 如下

# kubectl describe svc/mysql
# kubectl describe endpoints/mysql

k8s集群中启动一个centos容器进行验证:

$ cat > cenots.yml << EOF
apiVersion: v1
kind: Pod
metadata:name: cdh-masterlabels:role: cdh6.3
spec:containers:- name: centos7-1image: registry.cn-hangzhou.aliyuncs.com/dragon8512/centos7jdk8ssh:v1ports:- containerPort: 22hostPort: 50022protocol: TCP
EOF
# ports 字段非必须# 创建pod
# kubectl apply -f cenots.yml

进入容器访问数据库进行测试:

# kubectl exec -it cdh-master bin/bash
[root@cdh-master /]# ping mysql.default.svc.cluster.local

springboot 数据源配置:

mysql.default.svc.cluster.local

Kubernetes引入外部服务与外部数据源相关推荐

  1. K8S 最佳实践-映射外部服务 Endpoints / ExternalName

    大多数 Kubernetes 用户都有可能用到集群外部的服务.例如,您可能使用 Twillio API 发送短信,或使用 Google Cloud Vision API 进行图像分析. 如果位于不同环 ...

  2. centos7 Kubeadm安装配置K8S 及Dashboard外部服务

    环境: Kubernetes Master节点:192.168.0.47 Kubernetes node1节点:192.168.0.33 Kubernetes node2节点:192.168.0.37 ...

  3. Consul与外部服务

    HashiCorp Consul是一个服务网格,用于服务发现.运行时配置和微服务应用程序和基础设施的服务分割.Consul允许注册和发现"内部"服务到您的基础设施,以及" ...

  4. 【MM模块】 External Services 外部服务

    由上图所知,正常我们下一个PO都会知道购买什么东西,以多少价格购买.但是比如SAP上线,比如期初设定了300万,但随着业务的深入实施工期不断拖长,变成了500万,这样的情况我们就可以使用外部服务来做. ...

  5. 微软服务器收费吗,了解 Azure 外部服务收费

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 了解 Azure 外部 ...

  6. Linux调用外部服务出现java.net.UnknownHostException

    windows下调用某外部服务的接口正常,发布到测试环境中的linux下,短信服务接口.验证码接口齐刷刷的出现了UnknownHostException, java.net.UnknownHostEx ...

  7. 外部集成 网页制作_外部服务的集成测试

    外部集成 网页制作 我们的系统通常依赖于第三方服务(它们甚至可能是我们无法控制的公司内部服务). 此类服务包括公开API的社交网络,带有诸如Salesforce,身份验证提供程序之类的API的SaaS ...

  8. httpclient依赖_.NetCore 3.1高性能微服务架构:封装调用外部服务的接口方法HttpClient客户端思路分析...

    护士节快乐 众所周知,微服务架构是由一众微服务组成,项目中调用其他微服务接口更是常见的操作.为了便于调用外部接口,我们的常用思路一般都是封装一个外部接口的客户端,使用时候直接调用相应的方法.webse ...

  9. tableau无法建立连接_外部服务连接疑难解答 - Tableau

    本主题描述 Tableau 连接到外部分析扩展程序服务时可能会收到的错误. 注意:Tableau 技术支持人员无法协助编写.调整外部脚本或排除其问题. 与任何分析扩展程序通信时可能会发生的错误 错误消 ...

最新文章

  1. 计划策略-20-订货型生产
  2. rhel6 mysql replication
  3. 函数的返回是返回给实参,然后由实参输出,返回值的作用是给输出的全部变为变量然后用.=连接好把变量存进数据库而不是输出完屏幕就拉倒了...
  4. 两台虚拟服务器如何级联,[教程] 利用open vswitch建立vxlan隧道实现不同主机上的虚拟交换机级联...
  5. 10个问题带你全面理解Linux性能优化
  6. 计算机中那些事儿(三):我与Dos的不解情缘---初识篇
  7. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第4天
  8. Vue+SpringBoot的微信登录
  9. BIO,NIO的区别,使用场景。
  10. GitHub+JenKins集成Python自动化测试脚本
  11. 游戏人物属性如何设计
  12. 经典题目3-应用的闪退通常是什么原因造成的?如果应用闪退,Android 和 iOS 上是分别怎么抓取日志的?
  13. AI教程:自定义参考线
  14. Java定时任务处理异常空指针,执行定时器报空指针异常
  15. TCP和UDP的区别有哪些?
  16. 皮尔逊相关性的五个假设前提
  17. 两款WEB防火墙软件介绍
  18. 平板电脑必装十大软件_知乎高赞回答:职场新人必装的电脑软件有哪些?太全了!...
  19. 【Flutter 异步编程 - 捌】 | 计算耗时? Isolate 来帮忙
  20. outlook2016把日历导出html,如何将Outlook日历导出到Excel每周时间表?

热门文章

  1. FPGA设计-时序约束(中篇-实例分析)
  2. 大火的数字藏品背后究竟蕴含着什么巨大魅力?
  3. 【Grammar】in 和 within 用法和区别
  4. 你的电脑遇到问题,需要重新启动
  5. 大模型“涌现”的思维链,究竟是一种什么能力?
  6. Pundit的Rails授权
  7. 单片机原理及应用知识总结(持续更新)
  8. 游戏大数据分析--游戏玩家
  9. disk cache(磁盘缓存) 和 memory cache(内存缓存)的区别
  10. matlab判断double_matlab中double语句.doc