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

实际上,原理如下图:

 

原文地址:https://www.cnblogs.com/windysai/p/14826086.html