阿里云容器化产品使用

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 阿里云容器化产品使用

第一期k8s环境部署

创建无状态应用

在集群详情选择无状态菜单,选择镜像创建,填写应用名称、镜像地址和tag,设置资源配置和端口,在高级配置中选择服务(Service)右边的创建,填写服务的名称、类型、以及服务端口和容器端口,然后点创建,完成后到应用详情查看应用状态

测试应用

在容器首页查看网络下面的服务有对应的公网ip,在浏览器访问公网ip则可以访问到上面部署的无状态服务

prometheus监控

在容器首页点击运维管理下的prometheus的监控菜单,里面会有容器的各种监控指标

第二期容器环境docker安装

  1. docker环境安装

1.1 安装依赖库

yum install -y yum-utils device-mapper-persistent-data lvm2

1.2 添加docker镜像源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.3 安装docker ce
yum makecache fast && yum -y install docker-ce

1.4 配置docker镜像加速

tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

1.5 启动docker

  1. 构建docker本地镜像以及运行镜像

2.1 创建工作空间同时编写hello world代码

cat > /tmp/demo/main.go << EOF
package main

import (

    "fmt"
    "net/http"

)

func main() {

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            fmt.Fprintf(w, "Hello! World\n")
    })

    fmt.Println("start to serve...")
    http.ListenAndServe(":80", nil)

}
EOF

2.2 创建dockerfile文件
在项目根目录创建dockerfile文件
cat > /tmp/demo/Dockerfile << EOF
FROM golang:1.12-alpine

change current working dir

WORKDIR /go/src/app

copy main.go into /go/src/app

COPY . .

go build and install the app

RUN go install -v ./...

run the app by default

CMD ["app"]
EOF
2.3 开始构建本地镜像

docker build . -t demo:v1
.: 代表构建本地路径
-t: 代表tag

2.4 运行本地镜像
docker run -d -p 9000:80 demo:v1

-d:后台运行
-p 指定端口映射
demo:v1: 运行镜像的tag

第三期chaosblade体验

  1. 创建集群

1.1 创建kubernetes集群

1.2 部署应用资源

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



创建后大概3-5分钟后在无状态菜单中看到部署的服务,如下图

通过前端应用frontend的详情frontend-external获取前端访问地址,至此容器部署完成

  1. 部署探针

在容器服务-Kubernetes首页的应用中心菜单找到集群,进入集群详情,选择左侧应用菜单下的helm创建ack-ahas-pilot探针服务,安装完成后会出现下图:

  1. chaosblade故障演练

首先进入chaosblade首页https://chaos.console.aliyun.com/,在架构感知里面选择kubernetes监控视图,如下图

选择命名空间

后续由于探针功能异常,无法继续进行演练步骤

4.存在问题

创建ack-ahas-pilot探针后在场景演练中没有frontend可选,如下图:

本以为是ack-ahas-pilot问题,我在heml下删除ack-ahas-pilot后,重新创建会提示已经存在资源,入下图:

目录
相关文章
|
2月前
|
专有云 Serverless 持续交付
亚太唯一,阿里云再度入选Gartner®容器管理魔力象限领导者
Gartner正式发布 2024《容器管理魔力象限》报告,阿里云再度成为中国唯一一家入选「领导者象限」的科技公司。
|
2月前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
106 2
|
3月前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
3年前的云栖大会,我们发布分布式云容器平台ACK One,随着3年的发展,很高兴看到ACK One在混合云,分布式云领域帮助到越来越多的客户,今天给大家汇报下ACK One 3年来的发展演进,以及如何帮助客户解决分布式领域多云多集群管理的挑战。
阿里云容器服务 ACK One 分布式云容器企业落地实践
|
2月前
|
弹性计算 Kubernetes 网络协议
阿里云弹性网络接口技术的容器网络基础教程
阿里云弹性网络接口技术的容器网络基础教程
阿里云弹性网络接口技术的容器网络基础教程
|
3月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
3月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
阿里云ACK容器服务生产级可观测体系建设实践
|
3月前
|
运维 Kubernetes Java
阿里云容器计算服务ACS ,更普惠易用、更柔性、更弹性的容器算力
ACS(阿里云容器计算服务)推出Serverless容器算力,提供更普惠、柔性、弹性的算力资源,适用于多种业务场景,如复合应用、ACK集成、EMR大数据处理等,帮助企业降低成本、提升效率。
|
3月前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
今年是Kubernetes十周年,在这10年间。我们已经看到其成长为云原生操作系统,向下高效调度多种算力资源,屏蔽基础设施差异,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务产品已经覆盖了从公共云、边缘云、到本地数据中心的各个场景。让所有需要云能力的地方,都有统一的容器基础设施。
阿里云容器服务,智算时代云原生操作系统
|
3月前
|
人工智能 Cloud Native 调度
阿里云容器服务在AI智算场景的创新与实践
2024年云栖大会,我们总结过往支持AI智算基础底座的实践经验、发现与思考,给出《容器服务在AI智算场景的创新与实践》的演讲。不仅希望将所做所想与客户和社区分享,也期待引出更多云原生AI领域的交流和共建。
|
3月前
|
人工智能 运维 Kubernetes
拥抱智算时代:阿里云容器服务智能、托管、弹性新体验
在2024云栖大会容器计算专场,给大家分享容器服务的新产品体验,本次分享,我们聚焦容器服务是如何通过智能、托管、弹性的产品新体验,来助力客户拥抱智算时代的。