k8s学习课后作业(1)
k8s学习课后作业
作业来自于报名学习的一个k8s付费课程。话说,我的同学大部分都完成了作业,也考完证。俺只做了第一章,然后就没然后了(想到这,我经常想抽死我自己= =),慢慢补作业好了 = =
第一章:Docker快速入门
第二、三章:K8s核心概念与集群搭建
1、使用kubeadm搭建一个K8s集群
2、新建命名空间,在该命名空间中创建一个pod
(1)命名空间名称:aliang-cka;(2)pod名称:pod-01 (3)镜像:nginx
3、创建一个deployment并暴露,Service 名称为web;镜像名:nginx
解决:
4、列出命名空间下指定标签pod
• 命名空间名称:kube-system
• 标签:k8s-app=kube-dns
解决:
kubectl get pods -l k8s-app=kube-dns -n kube-system
第四章:k8s监控与日志
1、查看pod日志,并将日志中Error的行记录到指定文件 /opt/calico
#假设这里查看的pod是calico, 记录到的指定文件为:/opt/calico
kubectl logs calico-kube-controllers-69496d8b75-kpsv8 -n kube-system |grep Error > /opt/calico
2、查看指定标签使用cpu最高的pod,并记录到到指定文件
• 标签:app=web
• 文件:/opt/cpu
解决:
(1)前提要先装好metrics server去采集集群资源利用率,这样才能用kubectl top命令去筛选cpu最高的pod
(2)官方关于k8s标签的说明文档:https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#label
(3)linux中sort针对列降序排序
最终命令:
kubectl top pod -l app=web |grep -v NAME | sort -nr -k 3 | head -n 1> /opt/cpu
3、Pod里创建一个边车容器读取业务容器日志
这题有点超纲了,老师说超出本章知识点范围,得有数据卷储备知识。。。。
首先解释下啥叫边车(最近看到朋友圈,有个朋友就是开这种车一家三口从柳州到西藏旅游的):
边车又叫sidecar模式,更详细的说明请看:https://developer.51cto.com/art/202009/627054.htm。
也就是k8s的pod,一个pod可能有多个容器,边车就相当于辅助挂到这多个容器上,去采集日志。
解决:
1 [root@k8s-master 20210314]# cat sidecar.yaml 2 apiVersion: v1 3 kind: Pod 4 metadata: 5 name: nginx-pods-logs 6 spec: 7 containers: 8 - name: nginx-pods 9 image: lizhenliang/nginx-php 10 volumeMounts: 11 - name: logs 12 mountPath: /usr/local/nginx/logs 13 - name: nginx-pods-logs 14 image: busybox 15 args: [/bin/sh,-c,'tail -f /opt/access.log'] 16 volumeMounts: 17 - name: logs 18 mountPath: /opt 19 volumes: 20 - name: logs 21 emptyDir: {}
[root@k8s-master 20210314]# kubectl apply -f sidecar.yaml
运行完会有个名字为“nginx-pods-logs”的pod,里面有两个容器,一个边车,一个nginx。
测试:
1、假设访问nginx容器
[root@k8s-master ~]# curl 10.244.169.137:80
2、查看日志:
(1)nginx-pods容器
[root@k8s-master 20210314]# kubectl exec -it nginx-pods-logs -c nginx-pods -- bash
(2)nginx-pods-logs边车容器
(为啥不需要进去边车容器看,因为创建的时候是实时输出日志的:tail -f /opt/access.log)
另一个终端窗口运行命令就能看到实时日志了, 留意下日志时间,是对得上的
kubectl logs -f nginx-pods-logs -c nginx-pods-logs
实际上,原理如下图: