ottom: 0px; -ms-text-justify: inter-ideograph;">28. # List all replication controllers and services together in ps output format.
29. kubectl get rc,services
30.
31. # List one or more resources by their type and names.
32. kubectl get rc/web service/frontend pods/web-pod-13je7
查看容器日志的命令:
1. kubectl logs hpe-myweb
进入容器的命令:
1. kubectl exec -ti hpe-myweb -- bash
查看帮助信息:
1. kubectl get -h
, 实验报告
目录
一、 课堂练习
实践 — 启动Kubernetes集群
5) 删除Pod $ kubectl delete pod hpe-myweb
实践 — Pod实践(续)
1) 创建hpe-mysql Pod
2) 创建hpe-myweb Pod
3) 访问hpe-myweb Pod
1) RC的创建和删除
2) Pod故障自动恢复
3) Pod副本扩容和缩容
4) 容器应用滚动升级
二、 课后作业
1. 完成课堂实践要求的练习,包括pod、rc等操作,要求截图
5. Pod内的容器端口号有哪几种设置,各自的差异是什么?
8. 描述RC可以实现的主要功能
1、查看已有pod的label标签。
一、 课堂练习
实践 — 启动Kubernetes集群
代码:
1) 启动集群:./1-start.sh
2) 验证:kubectl get nodes
运行截图:
实践 — Pod实践
代码:
1) Pod的创建 $ kubectl create -f hpe-myweb-pod.yaml $ kubectl get pods
2) Pod的日志 $ kubectl logs hpe-myweb
3) 登录进入Pod $ kubectl exec -ti hpe-myweb -- bash
4) 查看Pod详细信息 $ kubectl describe pod hpe-myweb
5) 删除Pod $ kubectl delete pod hpe-myweb
运行截图:
1、启动集群+Pod创建
2、Pod日志
3、进入Pod
4、查看Pod详细信息
5、删除Pod
实践 — Pod实践(续)
代码:
1) 创建hpe-mysql Pod
a) $ kubectl create -f hpe-mysql-pod.yaml
b) $ kubectl describe pod hpe-mysql
c) 查看pod的IP:172.17.1.2
2) 创建hpe-myweb Pod
a) $ vi hpe-myweb-pod.yaml env: - name: MYSQL_SERVICE_HOST value: '172.17.1.2'
b) $ kubectl create -f hpe-myweb-pod.yaml
3) 访问hpe-myweb Pod
a) $ kubectl exec -ti hpe-myweb -- bash
b) $ curl http://localhost:8080/demo/
运行截图:
1、创建hpe_mysql Pod,IP为10.1.95.6
2、创建hpe-myweb Pod
3、访问hpe-myweb Pod
实践 — RC的应用
代码:
1) RC的创建和删除
a) $ kubectl create -f hpe-myweb-v1-rc.yaml
b) $ kubectl get rc,pods 查看RC的详细信息,查看event事件
c) $ kubectl describe rc hpe-myweb
2) Pod故障自动恢复
a) $ kubectl delete pod hpe-myweb-atkft
b) $ kubectl get pods
3) Pod副本扩容和缩容
a) $ kubectl scale rc hpe-myweb --replicas=3
4) 容器应用滚动升级
a) $ kubectl rolling-update --poll-interval=2s --update-period=2s hpe-myweb -- image=myweb_image:v2
运行截图:
1、RC的创建和删除
2、Pod故障自动恢复
3、Pod副本扩容和缩容
4、容器应用滚动升级
二、 课后作业
题目:
1. 完成课堂实践要求的练习,包括pod、rc等操作,要求截图
解答:
见上面课堂作业部分
题目:
2. 一个Pod内多个容器可用于哪些应用场景?(对应KEM的哪些功能)
解答:
应用场景:
多容器POD的主要用途是支持主要应用程序的共定位、共管辅助进程。在一个POD中有多个容器,使它们相对简单地进行通信。
Ø Sidecar containers:"帮助"主容器,比如日志文件监视器.一个日志监视器构建完成以后,可以由不同的应用来使用.另一个示例是sidecar 容器为主容器加载文件和运行需要的数据
Ø 代理,桥接和适配器:使主容器与外部世界联通.比如Apache http服务器或者nginx可承载静态文件.也可以做为一个web的反向代理服务器.
题目:
3. 运行中的一个Pod实际由几个容器组成,分别提供什么功能?
解答:
组成:
每一个pod的组成是由一个或者多个业务容器加上一个称之为“根容器”的pause容器构成。
功能:
业务容器提供不同的业务功能,pause根容器可以代表整个pod容器组的状态,利于我们准确的掌握整个pod的状态。
题目:
4. 已部署的pod的yaml如何查看,系统比用户提交的yaml补充了哪些内容?哪些字段表示“状态”信息,分别代表什么含义?
解答:
查看方式:
使用该命令查看已部署pod的yaml:kubectl get pod hpe-myweb -o yaml
补充内容:
Ø 在metadata中补充了annotations、creationTimestamp、managedFields、namespace、ownerReferences、resourceVersion、selfLink、uid等信息。
Ø 在spec中补充了dnsPolicy、enableServiceLinks、nodeName、preemptionPolicy、priority等信息。
状态信息:
此外还补充了status状态信息,内容为:
1. - lastProbeTime: null
2. lastTransitionTime: "2021-06-27T04:23:39Z"
3. status: "True"
4. type: Initialized
5. - lastProbeTime: null
6. lastTransitionTime: "2021-06-27T04:23:41Z"
7. status: "True"
8. type: Ready
9. - lastProbeTime: null
10. lastTransitionTime: "2021-06-27T04:23:41Z"
11. status: "True"
12. type: ContainersReady
13. - lastProbeTime: null
14. lastTransitionTime: "2021-06-27T04:23:39Z"
15. status: "True"
16. type: PodScheduled
17. containerStatuses:
18. - containerID: docker://441bf2642a0da09f73c5343cf55fcca50daa4f0e
19. image: myweb_image:v1
20. imageID: docker://sha256:8362178fdb14bc045f2305de960522ae57edf
21. lastState: {}
22. name: myweb
23. ready: true
24. restartCount: 0
25. started: true
26. state:
27. running:
28. startedAt: "2021-06-27T04:23:40Z"
29. hostIP: 192.168.18.3(主机ip地址)
30. phase: Running(运行状态)
31. podIP: 10.1.95.7(创建pod的ip)
32. podIPs:
33. - ip: 10.1.95.7
34. qosClass: BestEffort
35. startTime: "2021-06-27T04:23:39Z"(开始使用的时间)
题目:
5. Pod内的容器端口号有哪几种设置,各自的差异是什么?
解答:
设置:
1. ports: //容器需要暴露的端口号列表
2. - name: String //端口的名称
3. containerPort: int //容器要暴露的端口
4. hostPort: int //容器所在主机监听的端口(容器暴露端口映射到宿主机的端口),默认与containerPort相同,设置hostPort时,同一台主机将无法启动该容器的第二个副本
5. protocol: String //端口协议,支持TCP和UDP,默认为TCP
差异:
containerPort是容器要暴露的端口,而hostPort是容器所在主机监听的端口,protocol是端口协议(包含TCP和UDP),name则是端口名称。
containerPort实际上就是容器自身的端口,而hostPort则是containerPort映射到宿主机上的端口,这个我们可以在虚拟机中的端口映射里进程修改。
题目:
6. Pod内的容器可以使用哪些volume类型,各种volume的主要特点是什么?各种volume类型数据保存在什么位置?
解答:
类型与特点:
Ø Kubernetes 支持很多类型的卷,Pod可以同时使用任意数目的卷类型。
Ø 临时卷类型的生命周期与Pod相同,但持久卷可以比 Pod 的存活期长。
Ø 当 Pod 不再存在时,Kubernetes 也会销毁临时卷;不过 Kubernetes 不会销毁持久卷。
Ø 对于给定Pod中任何类型的卷,在容器重启期间数据都不会丢失。
保存位置:
Cache或appdata中,和类型(临时卷或长期卷)有关。
题目:
7. 部署一个Pod,包含2个容器,设置一个2个容器都可以访问的volume,在一个容器中写文件,另一个容器中读文件的内容,要求截图
解答:
1、启动two-container-pod.yaml,可以看到debian容器被终止而nginx服务器仍然在运行,在debian容器中写入下面这句话(这是two-containers中的内容)
2、可以看到,two-containers中有2个pods
3、进入nginx容器,先安装一下指令
4、 debian容器在nginx的根目录下创建了index.html文件。使用curl向 nginx 服务器发送一个GET请求,输出结果表示nginx提供了debian容器写的页面。
题目:
8. 描述RC可以实现的主要功能
解答:
主要功能:保证Pod的数量、健康,弹性收缩等。
RC(Replication Controller)保证了在所有时间内,都有特定数量的Pod副本在运行:如果太多了,RC就杀死几个;如果太少了,RC会新建几个。
与直接创建pod不同的是,RC会替换掉那些删除的或者被终止的pod,不管删除的原因是什么。
题目:
9. 描述Label的主要功能,给RC和Pod设置Label,设置有关联和无关联的两种情况,要求截图
解答:
Label主要功能:
Label(标签)是Kubernetes中一个核心个概念,一个Label是一个key=value的键值对,其中key与value都是用户自定义的。Label可以添加到各种资源对象上,如Node、Pod、Service、RC等。Label通常在资源对象定义时确定,也可以在对象创建后动态添加或删除。通常通过给指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能。这里的Label是将rc和对应的pod匹配起来。
过程:
1、查看已有pod的label标签。
2、查看已有rc的label标签,这个时候有三个pod是与rc有关联的。rc也是为了确保pod中有三个label为app=hpe-myweb的pod。
3、改写其中一个pod的Label标签并查看pod的信息和标签,发现hpe-myweb和rc已经无关联,所以rc又生成一个新的hpe-myweb,标签为app=hpe-myweb。
4、将该pod的label恢复,由于rc的存在,要保证里面只有3个pod所以恢复原样。
题目:
10. 描述workload控制器RC、Deployment、Daemonset、Statefulset的特点和功能
解答:
RC:
Ø 管理Pod
Ø 保证Pod的数量、健康,弹性收缩
Deployment:
Ø 部署无状态应用
Ø 管理Pod和ReplicaSet
Ø 具有上线部署、副本设定、滚动升级、回滚等功能
Ø 提供声明式更新,例如只更新一个新的Image
StatefulSet:
Ø 部署有状态应用
Ø 每个节点都有固定身份ID
Ø 集群的规模比较固定
Ø 如果磁盘损坏,集群内的某个节点无法运行
DaemonSet:
Ø 在每一个Node上运行一个Pod
Ø 新加入的Node也同样会自动运行一个Pod
题目:
11. 描述Job、Cronjob的特点和功能,以及与其他控制器的主要区别
解答:
特点和功能:
Ø Job:负责批量处理短暂的一次性任务,仅执行一次,并保证处理的一个或者多个Pod成功结束。
Ø Cronjob:负责定时任务,在指定的时间周期运行指定的任务。
与其他控制器区别:
Job作为Kubernetes中用于处理任务的资源,与其他的资源没有太多的区别,它也使用 Kubernetes 中常见的控制器模式,监听Informer中的事件并运行syncHandler同步任务
而CronJob由于其功能的特殊性,每隔 10s会从apiserver中取出资源并进行检查是否应该触发调度创建新的资源,需要注意的是CronJob并不能保证在准确的目标时间执行,执行会有一定程度的滞后。
题目:
12. 网上查询资料,描述Deployment、Daemonset、Statefulset的滚动升级策略和区别
解答:
Deployment控制器:
Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。
典型的应用场景:
Ø 用来创建Pod和ReplicaSet
Ø 滚动更新和回滚
Ø 扩容和缩容
Ø 暂停与恢复
DaemonSet控制器:
DaemonSet确保全部(或者某些)节点上运行一个Pod的副本。当有节点加入集群时,也会为他们新增一个Pod。当有节点从集群移除时,这些Pod也会被回收。删除 DaemonSet将会删除它创建的所有Pod。
DaemonSet的典型用法:
Ø 在每个节点上运行集群存储DaemonSet, 例如glusterd、ceph
Ø 在每个节点上运行日志收集DaemonSet,例如fluentd、logstash
Ø 在每个节点上运行监控DaemonSet,例如Prometheus Node Exporter、zabbix agent等
Ø 一个简单的用法是在所有的节点上都启动一个DaemonSet,将被作为每种类型的daemon使用。
Ø 一个稍微复杂的用法是单独对每种daemon类型使用多个DaemonSet,但具有不同的标志,并且对不同硬件类型具有不同的内存、CPU要求。
StatefulSet控制器:
StatefulSet是用来管理有状态应用的工作负载API对象。实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用"。
StatefulSet用来管理Deployment和扩展一组Pod,井且能为这些Pod提供*序号和唯一性保证*。
StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:
Ø 稳定的、唯一的网络标识符。
Ø 稳定的、持久的存储。
Ø 有序的、优雅的部署和缩放。
Ø 有序的、自动的滚动更新。
题目:
13. kubectl get 命令查看常见的资源对象有哪些,有什么缩写?查看容器日志的命令?进入容器内的命令?如何查看帮助信息?
解答:
Get命令查看对象:
1. # List all pods in ps output format.
2. kubectl get pods
3.
4. # List all pods in ps output format with more information (such as node name).
5. kubectl get pods -o wide
6.
7. # List a single replication controller with specified NAME in ps output format.
8. kubectl get replicationcontroller web
9.
10. # List deployments in JSON output format, in the "v1" version of the "apps" API group:
11. kubectl get deployments.v1.apps -o json
12.
13. # List a single pod in JSON output format.
14. kubectl get -o json pod web-pod-13je7
15.
16. # List a pod identified by type and name specified in "pod.yaml" in JSON output format.
17. kubectl get -f pod.yaml -o json
18.
19. # List resources from a directory with kustomization.yaml - e.g. dir/kustomization.yaml.
20. kubectl get -k dir/
21.
22. # Return only the phase value of the specified pod.
23. kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}}
24.
25. # List resource information in custom columns.
26. kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
27.
全套毕业设计论文现成成品资料请咨询