练习1

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

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

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

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

vi a.sh

#!/bin/sh

user=$(cat /etc/secret-volume/username)
password=`cat /etc/secret-volume/password` if [ "$user" = 'epm-user' -a "$password" = '123456' ]; then
echo 'Correct username and password! This busybox will serve you for 3600 seconds.'
sleep 3600
else
echo 'Incorrect username or password! This app will exit immediately.'
exit 1
fi

vi Dockerfile

FROM busybox:1.28

COPY a.sh /tmp/

ENTRYPOINT ["/bin/sh","-c","/tmp/a.sh"]

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

docker build -t mybox:v1 .

docker tag mybox:v1 192.168.202.130:80/dev/mybox:v1

docker push 192.168.202.130:80/dev/mybox:v1

vi secret.yaml

apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
username: ZXBtLXVzZXI=
password: MTIzNDU2
[root@svn ch5]# cat secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
username: ZXBtLXVzZXI=
password: MTIzNDU2

vi secret-pod.yaml

apiVersion: v1
kind: Pod
metadata:
name: secret-test-pod
spec:
containers:
- name: test-container
image: 192.168.202.130/dev/mybox:v1
volumeMounts:
# name must match the volume name below
- name: secret-volume
mountPath: /etc/secret-volume
# The secret data is exposed to Containers in the Pod through a Volume.
volumes:
- name: secret-volume
secret:
secretName: test-secret

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

[root@svn ch5]# kubectl get pod
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 16 23h
secret-test-pod 0/1 ContainerCreating 0 9m1s [root@svn ch5]# kubectl logs -f secret-test-pod
Error from server (BadRequest): container "test-container" in pod "secret-test-pod" is waiting to start: ContainerCreating [root@svn ch5]# kubectl logs secret-test-pod
// omitted
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 10m default-scheduler Successfully assigned default/secret-test-pod to app.centos7.com
Warning FailedMount 116s (x12 over 10m) kubelet, app.centos7.com MountVolume.SetUp failed for volume "secret-volume" : secret "test-secret" not found
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,则一切正常。

[root@svn ch5]# kubectl get pod
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 16 23h
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

apiVersion: v1
kind: PersistentVolume
metadata:
name: mybox-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/tmp"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mybox-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi

vi mybox-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mybox
name: mybox
spec:
replicas: 1
selector:
matchLabels:
app: mybox
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mybox
spec:
containers:
- image: busybox:1.28
name: busybox
command:
- sleep
- "3600"
volumeMounts:
- name: mybox-persistent-storage
mountPath: /tmp/
volumes:
- name: mybox-persistent-storage
persistentVolumeClaim:
claimName: mybox-pv-claim

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

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

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

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

// cat /tmp/joyo.txt
Tue Jul 23 04:42:50 UTC 2019
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. 那些年采的python的坑

    1:使用virtualenvwrapper 新建虚拟环境时出现的错误 OSError: Command D:\file\python\virtu...r\Scripts\python.exe - se ...

  2. 全面解析 | 钥匙环服务的应用场景&商业价值

    在互联互通的场景驱动下,同一开发者旗下常常拥有多款应用或者多个应用形态,用户在同一设备的不同应用或端口登录时,即便使用同一帐号,仍需要重复输入密码进行验证,操作复杂,直接影响到用户的使用体验,而华为钥 ...

  3. java基础---局部变量和全局变量

    1.成员变量的概念: 成员变量就是属于类的变量,在类中,方法体外定义的变量 1)成员变量又分为两种: 类变量(又称静态变量) 实例变量(又称非静态变量) 类变量(静态变量)   :是被static所修 ...

  4. 静态类中不可以使用$this

    //静态方法中不能使用$this,静态方法调用其他方法可以用static\self\类名来代替class ceshi{ static public function aa(){ static::bb( ...

  5. Jmeter——脱离Jenkins后,Ant集成邮件通知

    之前搭建在本地的Jenkins环境,由于重装系统的原因,环境不能用了.在用jmeter做测试的时候,索性用本地ant构建,运行下来也一样平稳. 结合Jenkins搭建环境,可以参考博文:Jenkins ...

  6. [ZJCTF 2019]Login

    学了一段时间的堆溢出现在继续做题, 例行检查一下 64位的程序放入ida中 shift+f12查看程序函数 可以看到非常明显的后门程序 查看主函数 发现了程序给的账号和密码,但是没有看到明显的栈溢出漏 ...

  7. [BUUCTF]REVERSE——相册

    相册 附件 步骤: apk文件,习惯用apkide打开,看它反编译成了jar,就换jadx-gui打开,题目提示找邮箱,因此在导航栏里搜索mail 看到了sendMailByJavaMail(java ...

  8. 【web】BUUCTF-web刷题记录

    本来一题一篇文章,结果发现太浪费了,所以整合起来了,这篇博文就记录 BUUCTF 的  web 题目的题解吧! 随便注 随便输入一个单引号,报错 order by 3就不行了 尝试联合查询的时候出现提 ...

  9. 40张图+万字,从9个数据类型帮你稳稳的拿捏Redis数据结构

    摘要:本文把Redis新旧版本的数据结构说图解一遍,共有 9 种数据结构:SDS.双向链表.压缩列表.哈希表.跳表.整数集合.quicklist.listpack. 本文分享自华为云社区<为了拿 ...

  10. Tornado.web.Application之-settings

    应用程序配置 class  tornado.web.Application(handlers:List [Union [Rule,Tuple]] = None,default_host:str = N ...