本文介绍容器服务Swarm集群与Kubernetes集群的应用访问比对,包括集群内部应用间访问及从集群外部访问应用。

集群内部应用间访问

容器服务Swarm集群

集群内部可以通过links标签,将需要被访问的服务名称设置到容器的环境变量中。

例如:使用yaml文件创建应用比对中,wordpress应用的web服务与mysql关联,在容器启动后,通过mysql这个服务名称即可完成服务的访问。
links:            #---7
    - 'db:mysql'

容器服务Kubernetes集群

在容器服务Kubernetes集群内部,可通过Service的ClusterIP或服务名称进行应用间访问。推荐使用服务名称进行应用间的访问。

在创建应用时,可以将需要被访问服务的服务名称以环境变量的方式使用。

例如:使用yaml文件创建应用比对中,wordpress在调用mysql服务时,就是通过环境变量的方式实现。
spec:    
      containers:    
      - image: wordpress:4   
        name: wordpress
        env:    
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql    #---7 通过名称指向需要访问的mysql,该名称与mysql service的名称相对应。
        - name: WORDPRESS_DB_PASSWORD    

从集群外部访问应用

通过域名访问应用
说明
  • 无论经典网络还是VPC,请确保网络的连通。
  • DNS具有负载均衡的能力,可将流量分发到不同的后端IP。
  • 通过域名作为应用的访问入口,可以不停机地将业务从Swarm集群迁移到Kubernetes集群。

简单路由(域名绑定到容器服务Swarm集群默认的SLB上)

为实现应用从容器服务Swarm集群迁移到Kubernetes集群,需要先在容器服务Kubernetes集群上创建应用,测试可用后,再进行应用迁移。



迁移方法

  • 在容器服务Kubernetes集群上通过以下步骤创建应用
    • 在容器服务Kubernetes集群上创建与Swarm集群相同类型的应用。
    • 在容器服务Kubernetes集群上为应用创建Loadbalancer类型的服务(Service)。
    • Loadbalancer类型的服务会创建SLB,在本例中为2.2.2.2。
    • 在DNS中test.com域名的后端IP增加2.2.2.2这个IP地址。
  • 验证Kubernetes集群的应用可用

    通过IP地址2.2.2.2可以正常访问应用,说明容器服务Kubernetes集群上的应用可用。

  • 应用迁移

    将DNS中test.com域名的后端IP地址1.1.1.1删除。

后续流量经过DNS后全部流向Kubernetes集群上的应用。

简单路由(域名绑定到应用在容器服务Swarm集群上自建的SLB)

域名绑定到容器服务Swarm集群上自建的SLB与绑定到默认的SLB的区别是:
  • SLB不是集群默认的,而是自建的。
  • DNS默认为云解析DNS,如果用户使用自己的域名,需要自行解析。

迁移方法

与域名绑定到容器服务Swarm集群默认的SLB的方法相同:在容器服务Kubernetes集群上创建应用,测试可用后,再进行应用迁移。



通过<HostIP>:<port>访问应用

如果您通过<HostIP>:<port>的方式访问应用,那么在原容器服务Swarm集群的基础上无法做到不停机迁移业务,请选择业务量小的时候进行业务的迁移。

迁移方法
  1. 在容器服务Kubernetes集群上创建应用,并通过NodePort类型的服务完成应用对外访问方式的暴露,请参考端口映射
  2. 记录该<NodePort>,将Swarm集群的<port>替换为Kubernetes集群的<NodePort>。
    说明 此步骤需要逐个停止并修改应用实例。
  3. 将Kubernetes集群内的worker节点,挂载到Swarm集群的SLB下。
  4. 当有流量时,会有部分流量进入Kubernetes集群的应用,待Kubernetes集群的应用验证可用后,将SLB中Swarm集群的节点删除,完成集群的迁移。

通过负载均衡访问应用

如果您通过负载均衡的方式访问应用,那么在原容器服务Swarm集群的基础上无法做到不停机迁移业务,请选择业务量小的时候进行业务的迁移。

迁移方法

容器Kubernetes集群LoadBalancer的使用方法与容器服务Swarm的负载均衡一样,请参考负载均衡路由配置