第四期:零基础容器技术实战

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 参与第4期活动《零基础容器技术实战》

Chaos带你快速上手混沌工程

1. 创建实验资源

在页面左侧,单击云产品资源下拉菜单,查看本次实验资源。
单击免费开通创建所需资源。
说明:

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在云产品资源列表查看已创建的资源信息,例如:IP地址、用户名和密码等。

2. 创建应用

  1. 点击右侧 图标,切换到远程桌面操作界面。
  2. 双击打开虚拟桌面的Firefox ESR浏览器,在RAM用户登录框中点击“下一步”,复制云产品资源列表中子用户密码,粘按CTRL+V把密码粘贴到密码输区,登陆子账户(后续在远程桌面里的粘贴操作均使用CTRL + V快捷键)。
  3. 复制容器服务ACK控制台地址,在FireFox浏览器打开新页签,粘贴并访问容器服务ACK控制台。
https://cs.console.aliyun.com/
  1. 在集群页面,单击详情。

  1. 在左侧导航栏,单击无状态。

  1. 在无状态页面,单击使用YAML创建资源。

  1. 在创建页面,复制以下代码并粘贴到模板框中,然后单击创建。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nacos-server
spec:
  selector:
    matchLabels:
      app: nacos-server
  template:
    metadata:
      labels:
        app: nacos-server
    spec:
      containers:
        - name: nacos-standalone
          image: registry.cn-beijing.aliyuncs.com/ahas_demo/nacos:1.0.0
          ports:
            - containerPort: 8848
          env:
            - name: PREFER_HOST_MODE
              value: "hostname"
            - name: MODE
              value: "standalone"
          resources:
            limits:
              cpu: 1
              memory: 2048Mi
            requests:
              cpu: 200m
              memory: 512Mi
---

apiVersion: v1
kind: Service
metadata:
  name: nacos-server
spec:
  type: ClusterIP
  selector:
    app: nacos-server
  ports:
    - name: http
      port: 8848
      targetPort: 8848
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cart-redis
spec:
  selector:
    matchLabels:
      app: cart-redis
  replicas: 1
  template:
    metadata:
      labels:
        app: cart-redis
    spec:
      containers:
        - name: cart-redis
          image: redis:alpine
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 6379
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: cart-redis
  name: cart-redis
spec:
  ports:
    - port: 6379
      targetPort: 6379
  selector:
    app: cart-redis
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cartservice
spec:
  selector:
    matchLabels:
      app: cartservice
  template:
    metadata:
      labels:
        app: cartservice
    spec:
      containers:
        - name: cartservice
          image: registry.cn-beijing.aliyuncs.com/ahas_demo/cartservice:1.0.0
          imagePullPolicy: Always
          env:
            - name: dubbo.registry.address
              value: "nacos://nacos-server:8848"
            - name: spring.cloud.nacos.discovery.server-addr
              value: "nacos-server:8848"
            - name: spring.cloud.nacos.config.server-addr
              value: "nacos-server:8848"
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: recommendationservice
spec:
  selector:
    matchLabels:
      app: recommendationservice
  template:
    metadata:
      labels:
        app: recommendationservice
        version: 1.0.0-SNAPSHOT
    spec:
      containers:
        - name: recommendationservice
          image: registry.cn-beijing.aliyuncs.com/ahas_demo/recomendationservice:1.0.0
          # imagePullPolicy: Always
          env:
            - name: dubbo.registry.address
              value: "nacos://nacos-server:8848"
            - name: spring.cloud.nacos.discovery.server-addr
              value: "nacos-server:8848"
            - name: spring.cloud.nacos.config.server-addr
              value: "nacos-server:8848"
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: product-mysql
spec:
  selector:
    matchLabels:
      app: product-mysql
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: product-mysql
    spec:
      containers:
        - args:
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_unicode_ci
          env:
            - name: MYSQL_DATABASE
              value: product
            - name: MYSQL_ROOT_PASSWORD
              value: productservice
          image: mysql:5.6
          name: product-mysql
          ports:
            - containerPort: 3306
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: product-mysql
  name: product-mysql
spec:
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: product-mysql
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: productservice
spec:
  selector:
    matchLabels:
      app: productservice
  template:
    metadata:
      labels:
        app: productservice
        version: 1.0.0-SNAPSHOT
    spec:
      containers:
        - name: productservice
          image: registry.cn-beijing.aliyuncs.com/ahas_demo/productservice:1.0.0
          imagePullPolicy: Always
          env:
            - name: dubbo.registry.address
              value: "nacos://nacos-server:8848"
            - name: spring.cloud.nacos.discovery.server-addr
              value: "nacos-server:8848"
            - name: spring.cloud.nacos.config.server-addr
              value: "nacos-server:8848"
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: checkout-mysql
spec:
  selector:
    matchLabels:
      app: checkout-mysql
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: checkout-mysql
    spec:
      containers:
        - args:
            - --character-set-server=utf8mb4
            - --collation-server=utf8mb4_unicode_ci
          env:
            - name: MYSQL_DATABASE
              value: checkout
            - name: MYSQL_ROOT_PASSWORD
              value: checkoutservice
          image: mysql:5.6
          name: checkout-mysql
          ports:
            - containerPort: 3306
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: checkout-mysql
  name: checkout-mysql
spec:
  ports:
    - port: 3306
      targetPort: 3306
  selector:
    app: checkout-mysql
---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: checkoutservice
spec:
  selector:
    matchLabels:
      app: checkoutservice
  template:
    metadata:
      labels:
        app: checkoutservice
    spec:
      containers:
        - name: checkoutservice
          image: registry.cn-beijing.aliyuncs.com/ahas_demo/checkoutservice:health
          imagePullPolicy: Always
          ports:
            - name: liveness-port
              containerPort: 8080
              protocol: TCP
          env:
            - name: dubbo.registry.address
              value: "nacos://nacos-server:8848"
            - name: spring.cloud.nacos.discovery.server-addr
              value: "nacos-server:8848"
            - name: spring.cloud.nacos.config.server-addr
              value: "nacos-server:8848"
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /health
              port: liveness-port
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          startupProbe:
            failureThreshold: 3
            httpGet:
              path: /health
              port: liveness-port
              scheme: HTTP
            initialDelaySeconds: 40
            periodSeconds: 5
            successThreshold: 1

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  selector:
    matchLabels:
      app: frontend
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - name: frontend
          image: registry.cn-beijing.aliyuncs.com/ahas_demo/frontend:async-test
          imagePullPolicy: Always
          ports:
            - name: liveness-port
              containerPort: 8080
              protocol: TCP
          env:
            - name: dubbo.registry.address
              value: "nacos://nacos-server:8848"
            - name: spring.cloud.nacos.discovery.server-addr
              value: "nacos-server:8848"
            - name: spring.cloud.nacos.config.server-addr
              value: "nacos-server:8848"
          resources:
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /health
              port: liveness-port
              scheme: HTTP
            initialDelaySeconds: 5
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          startupProbe:
            failureThreshold: 3
            httpGet:
              path: /health
              port: liveness-port
              scheme: HTTP
            initialDelaySeconds: 60
            periodSeconds: 5
            successThreshold: 1
---
apiVersion: v1
kind: Service
metadata:
  name: frontend
spec:
  type: ClusterIP
  selector:
    app: frontend
  ports:
    - name: http
      port: 8080
      targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: frontend-external
spec:
  type: LoadBalancer
  selector:
    app: frontend
  ports:
    - name: http
      port: 8080
      targetPort: 8080
  1. 在左侧导航栏,单击无状态。
  2. 在无状态页面,等待几分钟,单击刷新,容器组数量全部为1/1之后,表示应用部署完成。

3. 安装探针

  1. 回到容器服务控制台页面,单击左侧导航栏上方的 图标。
  2. 在集群列表页面的左侧导航栏中,单击应用目录。
  3. 在应用目录页面,单击ack-ahas-pilot。
  4. 在ack-ahas-pilot的详情页面,单击创建。

4. 通过架构感知查看系统整体架构

  1. 复制应用高可用服务控制台地址,在Firefox浏览器打开新页签,粘贴并访问容器服务应用高可用服务控制台。
https://chaos.console.aliyun.com/
  1. 在概览页面顶部,选择资源所在地域。例如下图中,地域切换为华东1(杭州)。
  2. 在左侧导航栏,单击故障演练>架构感知。
  3. 在架构地图页面,单击Kubernetes监控视图卡片中的查看视图。
  4. 在架构地图页面,打开Kubernetes监控视图下拉列表,选择命令空间为default,然后单击确定即可查看实验资源的Kubernetes监控视图。
相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
17天前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
5月前
|
存储 容器
46.[HarmonyOS NEXT RelativeContainer案例三] 打造自适应容器:内容驱动的智能尺寸调整技术
在HarmonyOS NEXT的UI开发中,创建能够根据内容自动调整尺寸的容器是实现灵活布局的关键。RelativeContainer结合自适应尺寸设置,可以实现内容驱动的智能尺寸调整,使UI更加灵活且易于维护。本教程将详细讲解如何创建自适应尺寸的RelativeContainer,帮助你掌握这一实用技术。
169 5
|
4月前
|
缓存 监控 前端开发
告别卡顿!3大前端性能优化魔法 + CSS容器查询实战
告别卡顿!3大前端性能优化魔法 + CSS容器查询实战
213 95
|
5月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
3月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
3月前
|
运维 测试技术 Docker
Docker:轻量级容器化技术革命
Docker:轻量级容器化技术革命
|
7月前
|
Ubuntu Linux Docker
Docker容器的实战讲解
这只是Docker的冰山一角,但是我希望这个简单的例子能帮助你理解Docker的基本概念和使用方法。Docker是一个强大的工具,它可以帮助你更有效地开发、部署和运行应用。
200 27
|
7月前
|
弹性计算 Java Maven
从代码到容器:Cloud Native Buildpacks技术解析
Cloud Native Buildpacks(CNB)是一种标准化、云原生的容器镜像构建系统,旨在消除手动编写Dockerfile,提供可重复、安全且高效的构建流程。它通过分层策略生成符合OCI标准的镜像,实现应用与基础镜像解耦,并自动化依赖管理和更新。阿里云应用管理支持通过CNB技术一键部署应用至ECS,简化构建和运行流程。