StatefulSet应用部署

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 本场景带您体验如何使用k8s的原生命令kubectl部署一个StatefulSet应用的镜像到k8s集群中,并对该StatefulSet应用进行伸缩操作。

StatefulSet应用部署


1. 创建实验资源

开始实验之前,您需要先创建云服务器ECS和ACK集群资源。

说明:在实验资源创建过程中,ECS会安装命令行工具kubectl并连接ACK集群,方便您在后续实验中通过ECS中的Kubernetes命令行工具kubectl来管理ACK集群以及应用。

  1. 在实验室页面,单击创建资源
  2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

说明:资源创建过程需要7~10分钟。

2. 部署StatefulSet应用

本步骤指导你如何部署statefulset应用到k8s集群中,并查看statefulset应用中的Pod和PVC情况。

  1. 执行如下命令,创建statefulset.yaml文件。
vi statefulset.yaml
  1. i键进入编辑模式,将如下代码复制到文件中。

说明:storageClassName配置为alicloud-disk-ssd,表示使用的是阿里SSD类型的云盘。

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: disk-ssd
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: disk-ssd
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "alicloud-disk-ssd"
      resources:
        requests:
          storage: 20Gi
  1. ECS键退出编辑模式,输入:wq,然后回车保存并退出文件。
  2. 执行如下命令,部署StatefulSet应用。
kubectl create -f statefulset.yaml
  1. 执行如下命令,查看Pod按照次序部署。
kubectl get pod -w -l app=nginx

返回结果如下 ,您可查看到Pod按照次序部署

  1. 输入Ctrl+C键,停止查看。
  2. 执行如下命令,查看已部署的Pod。
kubectl get pod

返回结果如下,您可查看到有两个已部署的Pod。

  1. 执行如下命令,查看PVC
kubectl get pvc

返回结果如下 ,您可查看到有两个PVC


3. 扩容StatefulSet应用

本步骤指导你如何扩容StatefulSet应用的Pod,并查看Pod和PVC的变化情况。

  1. 执行如下命令,扩容StatefulSet应用为3个Pod
kubectl scale sts web --replicas=3
  1. 执行如下命令,查看扩容后的Pod
kubectl get pod

返回结果如下,您可查看到扩容后的StatefulSet应用有3个Pod。

  1. 执行如下命令,查看扩容后的PVC
kubectl get pvc

返回结果如下,您可查看到扩容后的StatefulSet应用有3个PVC。


4. 缩容StatefulSet应用

  1. 执行如下命令,缩减StatefulSet应用为2个Pod,并查看Pod和PVC的变化情况。。
kubectl scale sts web --replicas=2
  1. 执行如下命令,查看缩容后的Pod。
kubectl get pod

返回结果如下,你可查看到StatefulSet应用已缩减到2个Pod。

  1. 执行如下命令,查看缩容后的PVC。
kubectl get pvc

返回结果如下,您可查看到PVC和PV并没有随Pod一起缩减。


5. 再次扩容StatefulSet应用

本步骤指导你如何扩容StatefulSet应用的Pod,并查看Pod和PVC的变化情况。

  1. 执行如下命令,扩容StatefulSet应用到3个Pod
kubectl scale sts web --replicas=3
  1. 执行如下命令,查看扩容后的Pod
kubectl get pod

返回结果如下,您可查看到扩容后的StatefulSet应用有3个Pod。

  1. 执行如下命令,查看扩容后的PVC
kubectl get pvc

返回结果如下,您可查看到扩容后新创建的Pod仍会使用原来的PVC和PV。


6. 删除StatefulSet应用的Pod

本步骤指导你如何删除StatefulSet应用的Pod,并查看Pod和PVC的变化情况。

  1. 执行如下命令,查看名称为web-1的Pod所引用的PVC。
kubectl describe pod web-1 | grep ClaimName

返回结果如下,您可查看到名称为web-1的Pod所引用的PVC。

  1. 执行如下命令,删除名称为web-1的Pod。
kubectl delete pod web-1
  1. 执行如下命令,查看Pod
kubectl get pod

返回结果如下,重新创建的Pod与删除前的Pod名称一致。

  1. 执行如下命令,查看PVC。
kubectl get pvc

返回结果如下,重新创建的Pod所使用的PVC与删除前的Pod所使用的PVC一致。


实验链接:https://developer.aliyun.com/adc/scenario/e561256759444baab1f8b302fe94ed43


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
9月前
|
存储 应用服务中间件 nginx
kubernetes Statefulset控制器
kubernetes Statefulset控制器
|
Web App开发 应用服务中间件 nginx
|
7月前
|
存储 Kubernetes 索引
Statefulset部署应用
Statefulset部署应用
|
7月前
|
Kubernetes Cloud Native 索引
Statefulset 实战 3
Statefulset 实战 3
|
7月前
|
Cloud Native Go Docker
Statefulset 实战 1
Statefulset 实战 1
|
7月前
|
Kubernetes API 索引
Statefulset实战 2
Statefulset实战 2
|
11月前
|
存储 Kubernetes Perl
StatefulSet
StatefulSet
79 0
|
存储 运维 Kubernetes
【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态
【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态
62 0
|
存储 网络协议 关系型数据库
kubernete编排技术三:StatefulSet
kubernete编排技术三:StatefulSet
162 0
kubernete编排技术三:StatefulSet
|
消息中间件 Kubernetes 网络协议
K8S(3)StatefulSet
K8S(3)StatefulSet
172 0
K8S(3)StatefulSet