阿里云K8s部署微服务教程

阿里云K8s部署微服务教程

经验文章nimo972025-06-21 22:38:471A+A-

在阿里云上使用 Kubernetes(ACK,阿里云容器服务 Kubernetes 版)部署微服务,可以遵循以下步骤:


1. 准备工作

  • 注册阿里云账号:确保已开通容器服务 ACK、容器镜像服务 ACR 等产品。
  • 开通相关服务:进入阿里云控制台,开通容器服务 Kubernetes 版(ACK)、容器镜像服务(ACR)、弹性计算(ECS)等。
  • 环境准备

O 安装 kubectl(Kubernetes 命令行工具)。

O 安装 aliyun CLI 或使用阿里云控制台操作。


2. 创建 Kubernetes 集群

  1. 进入 ACK 控制台:https://cs.console.aliyun.com
  2. 创建集群

O 选择集群类型:标准托管集群、Serverless 集群等。

O 配置节点:

选择地域和可用区。

设置 Worker 节点规格(ECS 实例类型)、数量(如 2-4 个节点)。

3.配置网络(VPC、虚拟交换机、Pod 网络 CIDR)。

O 确认配置并创建集群(约 5-10 分钟)。


3. 容器化微服务

  1. 编写 Dockerfile

dockerfile

FROM openjdk:11-jre-slim # 示例为 Java 应用

COPY target/*.jar /app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]

  1. 构建镜像并推送到 ACR

bash

# 登录 ACR(容器镜像服务)

docker login --username=<阿里云账号> registry.<region>.aliyuncs.com


# 构建镜像并打标签

docker build -t registry.<region>.aliyuncs.com/<namespace>/<service-name>:v1 .


# 推送镜像到 ACR

docker push registry.<region>.aliyuncs.com/<namespace>/<service-name>:v1


4. 部署微服务到 ACK

  1. 配置 Kubernetes 部署文件deployment.yaml):

yaml

apiVersion: apps/v1

kind: Deployment

metadata:

name: user-service

spec:

replicas: 2

selector:

matchLabels:

app: user-service

template:

metadata:

labels:

app: user-service

spec:

containers:

- name: user-service

image: registry.<region>.aliyuncs.com/<namespace>/<service-name>:v1

ports:

- containerPort: 8080

resources:

limits:

cpu: "1"

memory: 1Gi

---

apiVersion: v1

kind: Service

metadata:

name: user-service

spec:

selector:

app: user-service

ports:

- port: 80

targetPort: 8080

type: LoadBalancer # 阿里云会自动创建 SLB(公网/私网负载均衡)

  1. 部署到集群

bash

# 配置集群凭证(通过控制台获取kubeconfig)

aliyun cs GET /k8s/<cluster-id>/user_config | tee ~/.kube/config


# 应用部署文件

kubectl apply -f deployment.yaml


5. 配置网络与网关

  • Ingress 配置(可选):
    使用阿里云 SLB + Ingress Controller(如 Nginx)暴露服务。

yaml

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: my-ingress

annotations:

nginx.ingress.kubernetes.io/rewrite-target: /

spec:

rules:

- http:

paths:

- path: /user

pathType: Prefix

backend:

service:

name: user-service

port:

number: 80


6. 配置存储与配置

  • ConfigMap/Secrets
    管理微服务配置(如数据库连接信息):

bash

kubectl create configmap app-config --from-file=config.properties

  • 持久化存储
    使用阿里云 NAS、OSS 或云盘(PV/PVC):

yaml

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: data-pvc

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

storageClassName: alicloud-disk # 使用云盘


7. 监控与日志

  • 阿里云 ARMS(应用实时监控服务)
    集成 Prometheus 监控微服务性能。
  • 日志服务 SLS
    通过 Logtail 采集容器日志:

yaml

# 在 Deployment 中添加 sidecar 或 DaemonSet 采集日志


8. 自动扩缩容

  • HPA(Horizontal Pod Autoscaler)

bash

kubectl autoscale deployment user-service --cpu-percent=50 --min=2 --max=10

  • 集群节点弹性伸缩
    在 ACK 控制台配置节点自动扩缩容策略。

9. 持续集成/持续部署(CI/CD)

  • 使用阿里云云效
    配置流水线自动构建镜像并部署到 ACK。
  • GitHub Actions 示例:

yaml

jobs:

deploy:

steps:

- name: Deploy to ACK

run: |

kubectl set image deployment/user-service user-service=registry.cn-hangzhou.aliyuncs.com/my-ns/user-service:${{ github.sha }}


常见问题

  1. 镜像拉取失败

O 检查 ACR 权限(为 Worker 节点绑定 RAM 角色或配置镜像拉取密钥)。

  1. 服务无法访问

O 检查 Service 的 type(LoadBalancer/Ingress)和 Security Group 规则。

  1. 资源不足

O 调整节点规格或启用弹性伸缩。


通过以上步骤,您可以在阿里云 ACK 上快速部署和管理微服务架构。结合阿里云生态工具(如 ARMS、SLS、ACR),可实现完整的 DevOps 流程。

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7