华为云 Kubernetes 管理员实训 五 课后作业
练习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.yaml和kubectl 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 管理员实训 五 课后作业的更多相关文章
- 华为云 Kubernetes 管理员实训 四 课后作业
练习一 创建一个Service和一个Pod作为其后端.通过kubectl describe获得该Service和对应Endpoints的信息. Service的名称为<hwcka-004-1-s ...
- 华为云 Kubernetes 管理员实训 三 课后作业
Exercise 1 通过Deployment方式,使用redis镜像创建一个pod.通过kubectl获得redis启动日志. Deployment的名称为<hwcka-003-1-你的华为云 ...
- 【笔记】7天玩转容器&CKA管理员实训
第一部分 day1,容器基础知识介绍 安装 apt-get install docker-engine [root@cce-7day-fudonghai-24106 01CNL]# docker -v ...
- 实训五(Cocos2dx-3.x 打包apk再理解)
问题说明:Unable to resolve target 'android-10' SDK版本与Cocos项目默认的版本不相符 如果只是执行 cocos compile -p android 只是执 ...
- Java第一次实训课的作业
1.圆的面积 2.加密数字 3.奇偶数
- JAVA实训第二次作业
一维数组的创建和遍历. 声明并创建存放4个人考试成绩的一维数组,并使用for循环遍历数组并打印分数.要求: (1) 首先按"顺序"遍历,即打印顺序为:从第一个人到第四个人: (2) ...
- Kubernetes/K8s CKA认证全套实训视频教程下载
地址: 链接:https://pan.baidu.com/s/1bwEUZTCVzqM3mGjrlISbcg 提取码:r1kx 目录: 目录: │ 1-1.kubernetes理论教程 - 云原生技术 ...
- 华为云 AI 实战营计划,带你迈上 AI 之路
当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...
- Cloud Native Weekly | KubeCon首登中国,华为云亮相KubeCon 2018,微软云服务又罢工
1.KubeCon首登中国,Kubernetes将如何再演进? 11月14日,由CNCF发起的云原生领域全球最大的峰会之一KubeCon+CloudNativeCon首次登陆中国,中国已经成为云原生领 ...
随机推荐
- VectorCAST软件自动化测试方案
VectorCAST 是主要用于对C/C++/Ada程序进行软件自动化测试,并能够在Windows和Linux等多种开发环境下运行.其主要功能包含自动化的单元测试.集 成测试.覆盖率分析.回归测试.代 ...
- Nginx模块之limit_conn & limit_req
limit_conn模块 生效阶段:NGX_HTTP_PREACCESS_PHASE阶段 生效范围:全部worker进程(基于共享内存),进入preaccess阶段前不生效,限制的有效性取决于key的 ...
- 【紧急】继续折腾,Log4j再发2.1.6,强烈建议升级
背景 继前天正式发布的2.15.0之后,Apache log4j 2 团队宣布 Log4j 2.16.0 发布! 由于SLF4J适配兼容性的中断,Log4j 现在发布两个版本的SLF4J to Log ...
- HUST-计算机网络实验-socket编程
随笔---HUST计网实验:socket编程 博主大三在读,第一次写随笔,水平有限,就当记录一下学习的过程,顺便面试前复习项目的时候看看. 实验要求: 编写一个 Web 服务器软件,要求如下: 基本要 ...
- 采集 base64 编码的图片
问题 爬虫抓取网页的时候,遇到有的图片是 base64 编码的格式,要怎样下载到本地呢? 示例:base64 编码的 img 标签 <!-- 内容太长省略一部分 --> <img s ...
- [BUUCTF]REVERSE——[MRCTF2020]Xor
[MRCTF2020]Xor 附件 步骤: 例行检查,32位程序,无壳 32位ida载入,首先检索程序里的字符串,根据字符串的提示,跳转到程序的关键函数 根据flag,跳转到sub_401090函数 ...
- 用 shell 脚本做自动化测试
前言 项目中有一个功能,需要监控本地文件系统的变更,例如文件的增.删.改名.文件数据变动等等.之前只在 windows 上有实现,采用的是 iocp + ReadDirectoryChanges 方案 ...
- CF250A Paper Work 题解
Content 有 \(n\) 个数,要分成若干堆,要求每堆中的负数最多只能有两个.试求出分成的堆数最少是多少,并求出每一堆里面的数的个数. 数据范围:\(1\leqslant n\leqslant ...
- CF177A1/A2 Good Matrix Elements 题解
Content 给定一个 \(n\times n\) 的矩阵,每个元素都有一个值,求出处于两条对角线以及中间行和中间列的元素之和. 数据范围:\(1\leqslant n\leqslant 5(\te ...
- 多进程 multiprocessing 模块进程并发Process;Pool ;Queue队列 、threading模块;
multiprocessing 模块中的 Process类提供了跨平台的多进程功能,在windows和linux系统都可以使用. 1.首先要实例化一个类,传入要执行的函数. 实例名 = Process ...