华为云 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首次登陆中国,中国已经成为云原生领 ... 
随机推荐
- 基于spring sringmvc mybatis  做的导入导出
			导入 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ... 
- matplotlib animation
			import numpy as np from matplotlib import pyplot as plt from matplotlib import animation fig, ax = p ... 
- FindUserByPageServlet
			package com.hopetesting.web.servlet;import com.hopetesting.domain.PageBean;import com.hopetesting.do ... 
- 索引以及Mysql中的索引
			一.什么是索引 索引是表的目录,会保存在额外的文件中,针对表中的指定列建立,专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取 ... 
- 关于某 App 请求参数 sign 字段加密分析
			受害者: 6ZqG5LyX5pWw5o2u 通过 Charles 抓包发现关键信息请求均携带 sign 参数,且每次请求的值都不一样: 使用 jadx 将对应的 apk 反编译并分析,全局搜素 &qu ... 
- Table.Skip删除前面N….Skip/RemoveFirstN(Power Query 之 M 语言)
			数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ... 
- mysql联合查询更新数据库例子
			mysql联合查询更新数据库例子,用户表,部门表,把用户表中的部门属性更新为部门表的主键UPDATE user_table AS utINNER JOIN belongdept AS bd ON bd ... 
- 访问struts2的action页面出现白板问题
			访问struts2的action页面出现白板问题 故需要设置拦截此action的拦截栈, <bean id="authenticationInterceptor" class ... 
- Nginx中配置反向代理的proxy_pass的不同斜杠的区别
			location /api1/ { proxy_pass http://localhost:8080; } # http://localhost/api1/xxx -> http://local ... 
- Centos(Linux)安装openoffice教程
			一.从官网下载openoffice软件 下载地址:http://www.openoffice.org/zh-cn/download/ 选择(RPM)类型进行下载,选择对应的版本,这里默认选择是最新的版 ... 
