• 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

    实际上,原理如下图:

     

  • 相关阅读:
    vsftp搭建
    进程管理相关命令(15 个)
    系统管理与性能监视命令 (9 个)
    系统权限及用户授权相关命令(4 个)
    用户管理命令(10个命令)
    深入网络操作命令(9条命令)
    查看系统用户登陆信息的命令(7 个)
    查看文件及内容处理命令(21个命令)
    有关磁盘与文件系统的命令(16个命令)
    linux kernel bisops.h
  • 原文地址:https://www.cnblogs.com/windysai/p/14826086.html
Copyright © 2020-2023  润新知