练习1

部署一个Deployment应用,使用secret普通卷,该应用启动依赖此secret。

Deployment的名称为<hwcka-005-1-你的华为云id>

将所用命令、创建的Deployment及secret的完整yaml截图上传,注意体现依赖特性,如secret删除后,应用无法启动。

首先准备一个自定义的docker镜像

vi a.sh

  1. #!/bin/sh
  2. user=$(cat /etc/secret-volume/username)
  3. password=`cat /etc/secret-volume/password`
  4. if [ "$user" = 'epm-user' -a "$password" = '123456' ]; then
  5. echo 'Correct username and password! This busybox will serve you for 3600 seconds.'
  6. sleep 3600
  7. else
  8. echo 'Incorrect username or password! This app will exit immediately.'
  9. exit 1
  10. fi

vi Dockerfile

  1. FROM busybox:1.28
  2. COPY a.sh /tmp/
  3. ENTRYPOINT ["/bin/sh","-c","/tmp/a.sh"]

构建镜像,给镜像打标签,推送镜像

  1. docker build -t mybox:v1 .
  2. docker tag mybox:v1 192.168.202.130:80/dev/mybox:v1
  3. docker push 192.168.202.130:80/dev/mybox:v1

vi secret.yaml

  1. apiVersion: v1
  2. kind: Secret
  3. metadata:
  4. name: test-secret
  5. data:
  6. username: ZXBtLXVzZXI=
  7. password: MTIzNDU2
  8. [root@svn ch5]# cat secret.yaml
  9. apiVersion: v1
  10. kind: Secret
  11. metadata:
  12. name: test-secret
  13. data:
  14. username: ZXBtLXVzZXI=
  15. password: MTIzNDU2

vi secret-pod.yaml

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: secret-test-pod
  5. spec:
  6. containers:
  7. - name: test-container
  8. image: 192.168.202.130/dev/mybox:v1
  9. volumeMounts:
  10. # name must match the volume name below
  11. - name: secret-volume
  12. mountPath: /etc/secret-volume
  13. # The secret data is exposed to Containers in the Pod through a Volume.
  14. volumes:
  15. - name: secret-volume
  16. secret:
  17. secretName: test-secret

直接运行kubectl apply -f secret-pod.yaml,此时因为缺少secret,运行失败。

  1. [root@svn ch5]# kubectl get pod
  2. NAME READY STATUS RESTARTS AGE
  3. busybox 1/1 Running 16 23h
  4. secret-test-pod 0/1 ContainerCreating 0 9m1s
  5. [root@svn ch5]# kubectl logs -f secret-test-pod
  6. Error from server (BadRequest): container "test-container" in pod "secret-test-pod" is waiting to start: ContainerCreating
  7. [root@svn ch5]# kubectl logs secret-test-pod
  8. // omitted
  9. Events:
  10. Type Reason Age From Message
  11. ---- ------ ---- ---- -------
  12. Normal Scheduled 10m default-scheduler Successfully assigned default/secret-test-pod to app.centos7.com
  13. Warning FailedMount 116s (x12 over 10m) kubelet, app.centos7.com MountVolume.SetUp failed for volume "secret-volume" : secret "test-secret" not found
  14. Warning FailedMount 78s (x4 over 8m7s) kubelet, app.centos7.com Unable to mount volumes for pod "secret-test-pod_default(949a1255-acfc-11e9-87b5-000c29ad265c)": timeout expired waiting for volumes to attach or mount for pod "default"/"secret-test-pod". list of unmounted volumes=[secret-volume]. list of unattached volumes=[secret-volume default-token-52b6b]

先运行kubectl apply -f secret.yaml,再运行kubectl apply -f secret-pod.yaml,则一切正常。

  1. [root@svn ch5]# kubectl get pod
  2. NAME READY STATUS RESTARTS AGE
  3. busybox 1/1 Running 16 23h
  4. secret-test-pod 1/1 Running 0 3s

练习2

部署一个statefulset应用,使用持久化卷,通过pvc声明所需的存储大小10G及访问模式为RWX。

Deployment的名称为<hwcka-005-2-你的华为云id>

将所用命令、创建的statefulset及pvc的完整yaml和证明该应用有在存储中写内容的截图上传

vi mybox-pv.yaml

  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4. name: mybox-pv-volume
  5. labels:
  6. type: local
  7. spec:
  8. storageClassName: manual
  9. capacity:
  10. storage: 10Gi
  11. accessModes:
  12. - ReadWriteMany
  13. hostPath:
  14. path: "/tmp"
  15. ---
  16. apiVersion: v1
  17. kind: PersistentVolumeClaim
  18. metadata:
  19. name: mybox-pv-claim
  20. spec:
  21. storageClassName: manual
  22. accessModes:
  23. - ReadWriteMany
  24. resources:
  25. requests:
  26. storage: 10Gi

vi mybox-deploy.yaml

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. creationTimestamp: null
  5. labels:
  6. app: mybox
  7. name: mybox
  8. spec:
  9. replicas: 1
  10. selector:
  11. matchLabels:
  12. app: mybox
  13. strategy: {}
  14. template:
  15. metadata:
  16. creationTimestamp: null
  17. labels:
  18. app: mybox
  19. spec:
  20. containers:
  21. - image: busybox:1.28
  22. name: busybox
  23. command:
  24. - sleep
  25. - "3600"
  26. volumeMounts:
  27. - name: mybox-persistent-storage
  28. mountPath: /tmp/
  29. volumes:
  30. - name: mybox-persistent-storage
  31. persistentVolumeClaim:
  32. claimName: mybox-pv-claim

运行kubectl -f mybox-pv.yamlkubectl apply -f mybox-deploy.yaml

然后以命令kubectl exec -it mybox-95c474b84-9qvkv -- sh进入Pod。

  1. echo `date` > /tmp/joyo.txt
  2. echo hi >> /tmp/joyo.txt

即使是kubectl delete -f mybox-deploy.yaml之后,在Deployment曾经运行的主机上,仍然可以

  1. // cat /tmp/joyo.txt
  2. Tue Jul 23 04:42:50 UTC 2019
  3. hi

华为云 Kubernetes 管理员实训 五 课后作业的更多相关文章

  1. 华为云 Kubernetes 管理员实训 四 课后作业

    练习一 创建一个Service和一个Pod作为其后端.通过kubectl describe获得该Service和对应Endpoints的信息. Service的名称为<hwcka-004-1-s ...

  2. 华为云 Kubernetes 管理员实训 三 课后作业

    Exercise 1 通过Deployment方式,使用redis镜像创建一个pod.通过kubectl获得redis启动日志. Deployment的名称为<hwcka-003-1-你的华为云 ...

  3. 【笔记】7天玩转容器&CKA管理员实训

    第一部分 day1,容器基础知识介绍 安装 apt-get install docker-engine [root@cce-7day-fudonghai-24106 01CNL]# docker -v ...

  4. 实训五(Cocos2dx-3.x 打包apk再理解)

    问题说明:Unable to resolve target 'android-10' SDK版本与Cocos项目默认的版本不相符 如果只是执行 cocos compile -p android 只是执 ...

  5. Java第一次实训课的作业

    1.圆的面积 2.加密数字 3.奇偶数

  6. JAVA实训第二次作业

    一维数组的创建和遍历. 声明并创建存放4个人考试成绩的一维数组,并使用for循环遍历数组并打印分数.要求: (1) 首先按"顺序"遍历,即打印顺序为:从第一个人到第四个人: (2) ...

  7. Kubernetes/K8s CKA认证全套实训视频教程下载

    地址: 链接:https://pan.baidu.com/s/1bwEUZTCVzqM3mGjrlISbcg 提取码:r1kx 目录: 目录: │ 1-1.kubernetes理论教程 - 云原生技术 ...

  8. 华为云 AI 实战营计划,带你迈上 AI 之路

    当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...

  9. Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工

    1.KubeCon首登中国,Kubernetes将如何再演进? 11月14日,由CNCF发起的云原生领域全球最大的峰会之一KubeCon+CloudNativeCon首次登陆中国,中国已经成为云原生领 ...

随机推荐

  1. maven常用命令(待补充)

    1.mvn clean 删除已经编译好的信息 2.mvn compile 编译src/main/java目录下的.java文件 3.mvn test 编译src/main/java和src/test/ ...

  2. 【Xcode】sh: pause: command not found

    system("pause"); 只适合于DOS和Windows系统,不适合Linux系统. 直接删掉就可以. 或者改为: #include <unistd.h> pa ...

  3. arcgis api for js自定义引用方式

    (1)常规模式 ​ 即arcgis js常见的模块引用方式,采用 require-function 模式,function的参数与require一一对应即可(dojo/domReady!比较特殊,无需 ...

  4. 代码仓库gogs的基本配置使用

    目录 一.基本功能介绍 主板说明 页面说明 用户设置 二.仓库 新建仓库 迁移仓库 仓库介绍 三.组织和团队 创建新组织 创建团队 一.基本功能介绍 主板说明 图中1表示自己个人账户下的仓库(所有权属 ...

  5. 如何推翻JAVA的统治地位

    "java越来越过份了."php狠狠的说,他转头看着C:"C哥,您可是前辈,java最近砸了我不少场子,你老再不出来管管,我怕他眼里就没有您了啊." C哥吸烟, ...

  6. 车载以太网第二弹|测试之实锤-1000BASE-T1 IOP测试实践

    背景 车载以太网通信技术在汽车行业的应用速度远超预期,去年本土OEM已经上市了应用100BASE -T1的车型.今年,应用1000BASE -T1的车型预计也将会量产上市.针对测试而言,带来另外一个难 ...

  7. [BUUCTF]REVERSE——简单注册器

    简单注册器 附件 步骤: apk文件,直接用apkide打开 去找反编译后的文件,反编译后的语言并没有看大懂,网上百度后找到了一个反编的神器jeb,下载地址 用它反编译后按tab,就能看懂代码了,搜索 ...

  8. sublime打开中文文件乱码以及打开文件出现.dump

    一.中文乱码 原因:中文文件由gbk编码,刚安装的sublime不支持转码 解决方法:调用ctrl+shift+p,输入:install package,回车,在稍后弹出的安装包框中搜索:Conver ...

  9. THUSC 2021 游记

    想了想不往博客园放不行,还是放上来了. 原文 \[\texttt{Brief Introduction} \] 众所周知,THUSC2021 5 月 15-16 日在杭州市 XJ 中学举办,然而由于 ...

  10. 🍃【Spring专题】「原理系列」SpringMVC的运行工作原理(补充修订)

    承接相关之前的SpringMVC的框架技术的流程分析 初始化流程(initStrategies) 执行流程 寻找相关HandlerMapping 请求到DispatcherServlet类进行执行相关 ...