zoukankan      html  css  js  c++  java
  • k8s中引入外部服务

    简单记录下k8s中如何使用外部有状态服务,如mysql。

    一、需求

    在工作中,总会遇到这种情况:k8s环境中跑着各种程序接口,有状态服务如mysql,部署在物理机上,那么如果此时,程序接口需要访问数据库,一般有如下几种方式:

    • 通过设置程序部署文件中的 HostAliases 字段,来解析到数据库地址。(不建议,如果应用程序较多,需要每个程序部署文件都要指定 HostAlias)
    • 手动创建无头服务及endpoint,引入外部数据库,然后通过k8s集群中的域名解析服务访问,访问的主机名格式为:[svc_name].[namespace_name].svc.cluster.local
    • 通过k8s中service的externel name功能实现,具体实现方法暂时没研究,后续补充。

    二、通过无头服务实现

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

    # yml文件内容如下(service和endpoint名字要相同,属于同一个名称空间)
    $ cat > mysql_svc.yml << EOF
    apiVersion: v1
    kind: Service
    metadata:
      name: mysql
      namespace: default
    spec:
      clusterIP: None
      ports:
      - name: mysql
        port: 3306
        protocol: TCP
        targetPort: 3306
      type: ClusterIP
    
    ---
    apiVersion: v1
    kind: Endpoints
    metadata:
      name: mysql
      namespace: default
    subsets:
    - addresses:
      - ip: 192.168.20.2
      ports:
      - name: mysql
        port: 3306
        protocol: TCP
    EOF
    
    # 创建service及endpoint
    $ kubectl apply -f mysql_svc.yml
    

    查看创建的svc及endpoint如下:

    enter description here

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

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

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

    enter description here

    OK。。。

    *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
  • 相关阅读:
    前端性能优化(2.1 代码分离——入口起点 entry point)
    前端性能优化(prefetch, preload, dns-prefetch, defer, async)
    Golang-函数
    Golang复合类型-map
    Golang复合类型-切片
    Golang复合类型-数组
    Golang基础语法-goto语句
    Golang基础语法-跳出循环
    vueRouter学习笔记
    通过ES6实现个模板操作
  • 原文地址:https://www.cnblogs.com/lvzhenjiang/p/14445315.html
Copyright © 2011-2022 走看看