练习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. java多线程3:synchronized

    线程安全 多个线程共同访问一个对象的实例变量,那么就可能出现线程不安全的问题. 先看一段代码示例,定义一个对象 MyDomain1 public class MyDomain1 { private i ...

  2. jdk1.8帮助文档中文可搜索

    jdk1.8帮助文档中文可搜索 链接:https://pan.baidu.com/s/11beeZLpEIhciOd14WkCpdg 提取码:t4lw

  3. 隐藏和显示div的两种方法

    方式一 style="visibility: none;" visiblity:visible -------->可见 visiblity:hidden -------> ...

  4. [ZJCTF 2019]Login

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

  5. [BUUCTF]REVERSE——Youngter-drive

    Youngter-drive 附件 步骤: 例行查壳儿,32位程序,upx壳儿 利用网上找的upx脱壳儿工具脱完壳扔进ida,首先检索程序里的字符串,发现了有关flag的字样,跟进,当source=T ...

  6. 删除空行(嵌套)(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...

  7. LuoguP7441 「EZEC-7」Erinnerung 题解

    Content 给定 \(x,y,K\).定义两个数列 \(c,e\),其中 \(c_i=\begin{cases}x\cdot i&x\cdot i\leqslant K\\-K&\ ...

  8. Redis报错:RDB snapshots, but it is currently not able to persist on disk 处理

    Response received : -MISCONF Redis is configured to save RDB snapshots, but it is currently not able ...

  9. soundcloud to mp3

    关于 本文将介绍一个在线网站,将songs 下载为mp3格式 注意, 大陆需要梯子. 没有?soundcloud无法打开 准备 soundcloud to mp3 一个来自soundcloud的歌曲链 ...

  10. cmake命令行生成32位和64位项目

    概述 本文演示环境: win10 + VS2017 1.指定变量值 咱们常用命令[cmake ..]在build目录下配置生成项目和解决方案. 其实,这个命令还有其他用法. 指定CMakeLists. ...