Cloud Native 10 min read

How LeXin Medical Streamlined Kubernetes with UCloud UK8S: A Migration Case Study

This article details LeXin Medical's journey from a manually built Kubernetes cluster to the UCloud UK8S platform, covering the challenges of self‑hosting, the tools and processes used for migration, and the resulting improvements in logging, monitoring, CI/CD, and overall operational efficiency.

UCloud Tech
UCloud Tech
UCloud Tech
How LeXin Medical Streamlined Kubernetes with UCloud UK8S: A Migration Case Study

Kubernetes, open‑sourced by Google in 2014, quickly became the standard for container orchestration, offering automated deployment, massive scalability, and container management, but its inherent complexity poses challenges for many enterprises.

Choosing Kubernetes

LeXin Medical, founded in 2002, originally used a Dubbo‑based microservice architecture managed with Ansible, which struggled with the frequent scaling and rapid iteration of hundreds of services. In early 2016, after evaluating Mesos, Swarm, and Kubernetes, the team selected Kubernetes for its superior scheduling, load balancing, cluster management, and auto‑scaling capabilities.

Self‑built Kubernetes

Building the cluster required manually downloading binaries, configuring environment variables, and installing network and storage plugins, a time‑consuming and error‑prone process. Ongoing maintenance such as version upgrades was also manual. The first production cluster went live in June 2016, but frequent network and storage plugin failures, as well as core component bugs, forced manual hot upgrades that were difficult for a two‑person ops team.

Migrating to UK8S

Due to high operational overhead and limited elasticity when adding nodes, LeXin migrated to UCloud's UK8S platform in 2018, which resolved many network and storage issues and simplified Kubernetes management.

Open‑source tools used in the self‑built phase

Ansible – server configuration management.

Kubespray – Kubernetes cluster installation (requires manual handling of component downloads).

ROOK – storage solution.

Harbor – private image registry.

Log Platform

The logging pipeline consists of microservices → Kafka → Elasticsearch → Kibana. Kafka buffers logs to smooth spikes, dynamic schemas allow custom business fields, and each service gets its own index. All components run as Helm‑deployed replicas on UK8S, using UDisk SSD for storage.

Dubbo framework diagram
Dubbo framework diagram

Monitoring Platform

Performance monitoring uses Meituan’s open‑source CAT system for real‑time metrics, while business monitoring relies on Prometheus + Grafana. Both are deployed on UK8S with high availability.

CAT architecture
CAT architecture

CI/CD

Code releases are managed via an internal Jenkins‑based platform invoking Jenkins APIs. Pipelines build images in a Beta environment and promote them to Prod. The team plans to replace Jenkins with Drone for clearer YAML‑based pipelines.

Pipeline release flow
Pipeline release flow

Service Exposure

Production uses nginx‑ingress with external ULB for public access, while testing uses Konga, which runs on UK8S and offers a more user‑friendly UI than Kong.

Konga dashboard
Konga dashboard

Configuration Center

LeXin replaced Disconf with Apollo for centralized configuration management, enabling per‑namespace config via environment variables and providing better permission control and audit logs.

Conclusion

After moving to UK8S, LeXin Medical experienced reduced operational burden, higher cluster stability, and improved auto‑scaling. The migration freed the ops team from constant troubleshooting of network, storage, and Kubernetes component bugs, allowing them to focus on CI/CD automation and overall platform reliability.

Helm Deployment Example

# Install openldap
helm install --namespace openldap --name openldap \
  --set env.LDAP_ORGANISATION="xxx Inc" \
  --set env.LDAP_DOMAIN="xxx.com" \
  --set-string env.LDAP_READONLY_USER=true \
  --set env.LDAP_READONLY_USER_USERNAME="readonly" \
  --set env.LDAP_READONLY_USER_PASSWORD="xxx" \
  --set persistence.enabled=true \
  # Specify storage class as udisk-ssd
  --set persistence.storageClass=udisk-ssd \
  --set service.type=LoadBalancer \
  # Use internal load balancer
  --set service.annotations."service.beta.kubernetes.io/ucloud-load-balancer-type"="inner" \
  --set service.annotations."service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol"="tcp" \
  stable/openldap
monitoringCloud NativeCI/CDKubernetesdevopsloggingUK8S
UCloud Tech
Written by

UCloud Tech

UCloud is a leading neutral cloud provider in China, developing its own IaaS, PaaS, AI service platform, and big data exchange platform, and delivering comprehensive industry solutions for public, private, hybrid, and dedicated clouds.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.