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、声明:如有侵权,请联系删除。
    ============================= 升职加薪 ==========================
  • 相关阅读:
    部署yearning1.3
    git常用指令
    U盘centos7系统安装http://www.augsky.com/599.html
    C语言与SQL SERVER数据库(转)
    C连接MySQL数据库开发之Windows环境配置及测试(转)
    vs2012中添加lib,.h文件方法(原)
    如何用Visual Studio 2013 (vs2013)编写C语言程序 (转)
    Java值传递以及引用的传递、数组的传递!!
    ssh整合需要那些jar
    类加载器
  • 原文地址:https://www.cnblogs.com/uncleyong/p/15499743.html
Copyright © 2011-2022 走看看