zoukankan      html  css  js  c++  java
  • k8s基本使用(测试必备)

    测试为什么要学习容器技术及k8s

    k8s不是运维的专属技术

    随着互联网技术的发展,架构也已经从单体架构发展到容器云( “微服务 + k8s” 完美结合)

    很多人认为,k8s只是运维需要掌握的技术,讲真,测试和运维、开发都有技术交集

    所以,作为测试,也要跟上技术发展的节奏,与时俱进,技多不压身,大家也可以看看招聘要求,容器技术及k8s是加分项

    掌握这些热门技术,妥妥提升竞争力,抓住热门技术的红利期,就能快速加薪

    下面简单介绍下为什么要学习容器技术及k8s。

    为什么要学习docker?

    可以编写dockerfile,制作镜像
    快速验证镜像是否ok(docker run)
    轻松快捷部署一个学习环境,比如mysql,tomcat
    

    为什么要学习k8s?

    1、使用k8s的时候,docker被封装在k8s里面,对docker操作很少

    docker是一种容器技术,非k8s组件
    docker最小操作单元是容器
    k8s最小操作单元是pod

    2、不管是功能测试还是其它测试,查看日志需要会k8s基础操作,好比你看linux服务器上日志,需要linux基础一样

    3、性能监控分析需要

    1、node和linux整体监控一样的,https://www.cnblogs.com/uncleyong/p/15398198.html
    2、因为k8s的pod是根据算法调度的,所以你去看这个node上有哪些pod,Kubectl get po -owide | grep k8s-worker01
    3、结合微服务链路监控工具,https://www.cnblogs.com/uncleyong/p/15535852.html
    4、可以进入容器,kubectl exec -it podname -- sh,有top、vmstat常用命令,java项目,你也可以jstack打栈,也可以使用arthas,https://www.cnblogs.com/uncleyong/p/14944401.htm

    附:k8s资源yaml示例

    k8s核心资源:精简版yaml示例,https://www.cnblogs.com/uncleyong/p/15571059.html

    node(no)

    Node是Pod真正运行的主机,可以是物理机也可以是虚拟机。

    Node本质上不是Kubernetes来创建的, Kubernetes只是管理Node上的资源。

    为了管理Pod,每个Node节点上至少需要运行container runtime(Docker)、kubelet和kube-proxy服务。

    常用node操作:kubectl get nodes,查询所有node

    名称空间(ns)

    https://www.cnblogs.com/uncleyong/p/15610985.html

    标签(label)

    https://www.cnblogs.com/uncleyong/p/15704528.html

    核心资源:资源调度(Pod、RC、RCS、Deployment、Daemonset、Statefulset)

    Pod

    简介

    Pod是一组紧密关联的容器集合,支持多个容器在一个Pod中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式完成服务,是Kubernetes调度的基本单位。

    Pod的设计理念是每个Pod都有一个唯一的IP。


    Pod具有如下特征:

    包含多个共享IPC、Network和UTC namespace的容器,可直接通过localhost通信
    所有Pod内容器都可以访问共享的Volume,可以访问共享数据
    优雅终止:Pod删除的时候先给其内的进程发送SIGTERM,等待一段时间(grace period)后才强制停止依然还在运行的进程
    特权容器(通过SecurityContext配置)具有改变系统配置的权限(在网络插件中大量应用)
    支持三种重启策略(restartPolicy),分别是:Always、OnFailure、Never
    支持三种镜像拉取策略(imagePullPolicy),分别是:Always、Never、IfNotPresent
    资源限制,Kubernetes通过CGroup限制容器的CPU以及内存等资源,可以设置request以及limit值
    健康检查,提供两种健康检查探针,分别是livenessProbe和redinessProbe,前者用于探测容器是否存活,如果探测失败,则根据重启策略进行重启操作,后者用于检查容器状态是否正常,如果检查容器状态不正常,则请求不会到达该Pod
    Init container在所有容器运行之前执行,常用来初始化配置
    容器生命周期钩子函数,用于监听容器生命周期的特定事件,并在事件发生时执行已注册的回调函数,支持两种钩子函数:postStart和preStop,前者是在容器启动后执行,后者是在容器停止前执行
    
    创建方式

    参考:https://www.cnblogs.com/uncleyong/p/15571059.html

    【bak】pod资源清单详解:https://www.cnblogs.com/uncleyong/p/15611327.html

    RC & RCS

    Replication Controller(简称RC,副本控制器)可确保Pod副本数达到期望值,也就是RC定义的数量。换句话说,Replication Controller可确保一个Pod或一组同类Pod总是可用。

    RCS主要用作Deployment协调创建、删除和更新Pod,和Replication Controller唯一的区别是,ReplicaSet支持标签选择器

    二者很少单独被使用,都是使用更高级的资源Deployment、DaemonSet、StatefulSet来管理Pod。

    Deployment、Daemonset、Statefulset

    参考:https://www.cnblogs.com/uncleyong/p/15704741.html

    核心资源:配置管理(ConfigMap、Secret)

    https://www.cnblogs.com/uncleyong/p/15704534.html

    核心资源:服务发布(Service、Ingress)

    https://www.cnblogs.com/uncleyong/p/15704537.html

    Ingress-nginx的官方文档:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#rewrite

    Ingress-nginx Github:https://github.com/kubernetes/ingress-nginx

    高级调度

    污点(Taint)、容忍度(Toleration)

    初始化容器(InitContainer)

    node亲和性

    pod亲和性

    拓扑域(Topology),比如实现多地多机房部署

    临时容器

    计划任务(CronJob)

    存储

    https://www.cnblogs.com/uncleyong/p/15704766.html

    volumes:存储卷

    EmptyDir实现数据共享

    HostPath挂载宿主机路径

    挂载NFS至容器

    持久化存储(PV、PVC)

    presistentvolume:pv,持久化存储卷

    storageclass:动态存储

    权限管理:rbac

    Role-Based Access Control,中文全称:基于角色的权限访问控制

    资源配额:Resource Quotas

    https://www.cnblogs.com/uncleyong/p/15704767.html

    中间件部署

    redis等

    包管理工具

    helm

    operator

    运维、devops

    日志收集

    监控

    ci/cd

    ============================= 提升自己 ==========================
    > > > 1、咨询问题,请加作者微信: ren168632201
    > > > 2、性能测试从0到实战: https://www.cnblogs.com/uncleyong/p/12311432.html
    > > > 3、自动化测试实战: https://www.cnblogs.com/uncleyong/p/12016690.html
    > > > 4、测试基础汇总: https://www.cnblogs.com/uncleyong/p/10530261.html
    > > > 5、声明:如有侵权,请联系删除。
    ============================= 升职加薪 ==========================
  • 相关阅读:
    how to uninstall devkit
    asp.net中bin目录下的 dll.refresh文件
    查找2个分支的共同父节点
    Three ways to do WCF instance management
    WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
    检查string是否为double
    How to hide TabPage from TabControl
    获取当前系统中的时区
    git svn cygwin_exception
    lodoop打印控制具体解释
  • 原文地址:https://www.cnblogs.com/uncleyong/p/15499743.html
Copyright © 2011-2022 走看看