【測試必備】k8s基本使用(更新中。。。)


測試為什么要學習容器技術及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

 

node(no)

詳見:https://www.cnblogs.com/uncleyong/p/15789144.html

 

名稱空間(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,前者是在容器啟動后執行,后者是在容器停止前執行

 

【bak】pod資源清單詳解:https://www.cnblogs.com/uncleyong/p/15611327.html

 

創建方式

參考: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:k8s資源yaml示例

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

  bak:https://www.cnblogs.com/uncleyong/p/15488243.html

 

附2:k8s常用鏡像

k8s常用鏡像:https://www.cnblogs.com/uncleyong/p/15552783.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM