主頁 >  其他 > 從零開始入門 K8s | 應用配置管理

從零開始入門 K8s | 應用配置管理

2020-09-17 07:21:18 其他

一、需求來源

背景問題

首先一起來看一下需求來源,大家應該都有過這樣的經驗,就是用一個容器鏡像來啟動一個 container,要啟動這個容器,其實有很多需要配套的問題待解決:

  • 第一,比如說一些可變的配置,因為我們不可能把一些可變的配置寫到鏡像里面,當這個配置需要變化的時候,可能需要我們重新編譯一次鏡像,這個肯定是不能接受的;
  • 第二就是一些敏感資訊的存盤和使用,比如說應用需要使用一些密碼,或者用一些 token;
  • 第三就是我們容器要訪問集群自身,比如我要訪問 kube-apiserver,那么本身就有一個身份認證的問題;
  • 第四就是容器在節點上運行之后,它的資源需求;
  • 第五個就是容器在節點上,它們是共享內核的,那么它的一個安全管控怎么辦?
  • 最后一點我們說一下容器啟動之前的一個前置條件檢驗,比如說,一個容器啟動之前,我可能要確認一下 DNS 服務是不是好用?又或者確認一下網路是不是聯通的?那么這些其實就是一些前置的校驗,

Pod 的配置管理

在 Kubernetes 里面,它是怎么做這些配置管理的呢?如下圖所示:

file

  • 可變配置就用 ConfigMap;
  • 敏感資訊是用 Secret;
  • 身份認證是用 ServiceAccount 這幾個獨立的資源來實作的;
  • 資源配置是用 Resources;
  • 安全管控是用 SecurityContext;
  • 前置校驗是用 InitContainers 這幾個在 spec 里面加的欄位,來實作的這些配置管理,

二、ConfigMap

ConfigMap 介紹

下面我們來介紹第一個部分,就是 ConfigMap,我們先來介紹 ConfigMap 它是用來做什么的、以及它帶來的一個好處,它其實主要是管理一些可變配置資訊,比如說我們應用的一些組態檔,或者說它里面的一些環境變數,或者一些命令列引數,

它的好處在于可以讓一些可變配置和容器鏡像進行解耦,這樣也保證了容器的可移植性,看一下下圖中右邊的編排檔案截圖,

file

這是 ConfigMap 本身的一個定義,它包括兩個部分:一個是 ConfigMap 元資訊,我們關注 name 和 namespace 這兩個資訊,接下來這個 data 里面,可以看到它管理了兩個組態檔,它的結構其實是這樣的:從名字看 ConfigMap 中包含 Map 單詞,Map 其實就是 key:value,key 是一個檔案名,value 是這個檔案的內容,

ConfigMap 創建

看過介紹之后,再具體看一下它是怎么創建的,我們推薦用 kubectl 這個命令來創建,它帶的引數主要有兩個:一個是指定 name,第二個是 DATA,其中 DATA 可以通過指定檔案或者指定目錄,以及直接指定鍵值對,下面可以看一下這個例子,

file

指定檔案的話,檔案名就是 Map 中的 key,檔案內容就是 Map 中的 value,然后指定鍵值對就是指定資料鍵值對,即:key:value 形式,直接映射到 Map 的 key:value,

ConfigMap 使用

創建完了之后,應該怎么使用呢?

file

如上圖所示,主要是在 pod 里來使用 ConfigMap:

  • 第一種是環境變數,環境變數的話通過 valueFrom,然后 ConfigMapKeyRef 這個欄位,下面的 name 是指定 ConfigMap 名,key 是 ConfigMap.data 里面的 key,這樣的話,在 busybox 容器啟動后容器中執行 env 將看到一個 SPECIAL_LEVEL_KEY 環境變數;
  • 第二個是命令列引數,命令列引數其實是第一行的環境變數直接拿到 cmd 這個欄位里面來用;
  • 最后一個是通過 volume 掛載的方式直接掛到容器的某一個目錄下面去,上面的例子是把 special-config 這個 ConfigMap 里面的內容掛到容器里面的 /etc/config 目錄下,這個也是使用的一種方式,

ConfigMap 注意要點

現在對 ConfigMap 的使用做一個總結,以及它的一些注意點,注意點一共列了以下五條:

  1. ConfigMap 檔案的大小,雖然說 ConfigMap 檔案沒有大小限制,但是在 ETCD 里面,資料的寫入是有大小限制的,現在是限制在 1MB 以內;
  2. 第二個注意點是 pod 引入 ConfigMap 的時候,必須是相同的 Namespace 中的 ConfigMap,前面其實可以看到,ConfigMap.metadata 里面是有 namespace 欄位的;
  3. 第三個是 pod 參考的 ConfigMap,假如這個 ConfigMap 不存在,那么這個 pod 是無法創建成功的,其實這也表示在創建 pod 前,必須先把要參考的 ConfigMap 創建好;
  4. 第四點就是使用 envFrom 的方式,把 ConfigMap 里面所有的資訊匯入成環境變數時,如果 ConfigMap 里有些 key 是無效的,比如 key 的名字里面帶有數字,那么這個環境變數其實是不會注入容器的,它會被忽略,但是這個 pod 本身是可以創建的,這個和第三點是不一樣的方式,是 ConfigMap 檔案存在基礎上,整體匯入成環境變數的一種形式;
  5. 最后一點是:什么樣的 pod 才能使用 ConfigMap?這里只有通過 K8s api 創建的 pod 才能使用 ConfigMap,比如說通過用命令列 kubectl 來創建的 pod,肯定是可以使用 ConfigMap 的,但其他方式創建的 pod,比如說 kubelet 通過 manifest 創建的 static pod,它是不能使用 ConfigMap 的,

三、Secret

Secret 介紹

現在我們講一下 Secret,Secret 是一個主要用來存盤密碼 token 等一些敏感資訊的資源物件,其中,敏感資訊是采用 base-64 編碼保存起來的,我們來看下圖中 Secret 資料的定義,

file

元資料的話,里面主要是 name、namespace 兩個欄位;接下來是 type,它是非常重要的一個欄位,是指 Secret 的一個型別,Secret 型別種類比較多,下面列了常用的四種型別:

  • 第一種是 Opaque,它是普通的 Secret 檔案;
  • 第二種是 service-account-token,是用于 service-account 身份認證用的 Secret;
  • 第三種是 dockerconfigjson,這是拉取私有倉庫鏡像的用的一種 Secret;
  • 第四種是 bootstrap.token,是用于節點接入集群校驗用的 Secret,

再接下來是 data,是存盤的 Secret 的資料,它也是 key-value 的形式存盤的,

Secret 創建

接下來我們看一下 Secret 的創建,

file

如上圖所示,有兩種創建方式:

  • 系統創建:比如 K8s 為每一個 namespace 的默認用戶(default ServiceAccount)創建 Secret;

  • 用戶手動創建:手動創建命令,推薦 kubectl 這個命令列工具,它相對 ConfigMap 會多一個 type 引數,其中 data 也是一樣,它也是可以指定檔案和鍵值對的,type 的話,要是不指定,就默認是 Opaque 型別,

上圖中兩個例子,第一個是通過指定檔案,創建了一個拉取私有倉庫鏡像的 Secret,指定的檔案是 /root/.docker/config.json,type 的話指定的是 dockerconfigjson,另外一個我們指定鍵值對,我們 type 沒有指定,默認是 Opaque,鍵值對是 key:value 的形式,其中對 value 內容進行 base64 加密,創建 Secret 就是這么一個情況,

Secret 使用

創建完 Secret 之后,再來看一下如何使用它,它主要是被 pod 來使用,一般是通過 volume 形式掛載到容器里指定的目錄,然后容器里的業務行程再到目錄下讀取 Secret 來進行使用,另外在需要訪問私有鏡像倉庫時,也是通過參考 Secret 來實作,

file

我們先來看一下掛載到用戶指定目錄的方式:

  • 第一種方式:如上圖左側所示,用戶直接指定,把 mysecret 掛載到容器 /etc/foo 目錄下面;
  • 第二種方式:如上圖右側所示,系統自動生成,把 serviceaccount-secret 自動掛載到容器 /var/run/secrets/kubernetes.io/serviceaccount 目錄下,它會生成兩個檔案,一個是 ca.crt,一個是 token,這是兩個保存了認證資訊的證書檔案,

使用私有鏡像庫

下面看一下用 Secret 來使用私有鏡像倉庫,首先,私有鏡像倉庫的資訊是存盤在 Secret 里面的(具體參照上述的Secret創建章節),然后拉取私有倉庫鏡像,那么通過下圖中兩種方法的配置就可以:

  • 第一種方式:如下圖左側所示,直接在 pod 里面,通過 imagePullSecrets 欄位來配置;
  • 第二種方式是自動注入,用戶提前在 pod 會使用的 serviceaccount 里配置 imagePullSecrets,Pod 時系統自動注入這個 imagePullSecrets,

file

Secret 使用注意要點

最后來看一下 Secret 使用的一些注意點,下面列了三點:

  1. 第一個是 Secret 的檔案大小限制,這個跟 ConfigMap 一樣,也是 1MB;

  2. 第二個是 Secret 采用了 base-64 編碼,但是它跟明文也沒有太大區別,所以說,如果有一些機密資訊要用 Secret 來存盤的話,還是要很慎重考慮,也就是說誰會來訪問你這個集群,誰會來用你這個 Secret,還是要慎重考慮,因為它如果能夠訪問這個集群,就能拿到這個 Secret,
    如果是對 Secret 敏感資訊要求很高,對加密這塊有很強的需求,推薦可以使用 Kubernetes 和開源的 vault做一個解決方案,來解決敏感資訊的加密和權限管理,

  3. 第三個就是 Secret 讀取的最佳實踐,建議不要用 list/watch,如果用 list/watch 操作的話,會把 namespace 下的所有 Secret 全部拉取下來,這樣其實暴露了更多的資訊,推薦使用 GET 的方法,這樣只獲取你自己需要的那個 Secret,

四、ServiceAccount

ServiceAccount 介紹

接下來,我們講一下 ServiceAccount,ServiceAccount 首先是用于解決 pod 在集群里面的身份認證問題,身份認證資訊是存在于 Secret 里面,

file

先看一下上面的左側截圖,可以看到最下面的紅框里,有一個 Secret 欄位,它指定 ServiceAccount 用哪一個 Secret,這個是 K8s 自動為 ServiceAccount 加上的,然后再來看一下上圖中的右側截圖,它對應的 Secret 的 data 里有兩塊資料,一個是 ca.crt,一個是 token,ca.crt 用于對服務端的校驗,token 用于 Pod 的身份認證,它們都是用 base64 編碼過的,然后可以看到 metadata 即元資訊里,其實是有關聯 ServiceAccount 資訊的(這個 secret 被哪個 ServiceAccount 使用),最后我們注意一下 type,這個就是 service-account-token 這種型別,

舉例:Pod 里的應用訪問它所屬的 K8s 集群

介紹完 ServiceAccount 以及它對應的 secret 后,我們來看一下,pod 是怎么利用 ServiceAccount 或者說它是怎么利用 secret 來訪問所屬 K8s 集群的,
其實 pod 創建的時候,首先它會把這個 secret 掛載到容器固定的目錄下,這是 K8s 功能上實作的,它要把這個 ca.crt 和 token 這兩個檔案掛載到固定目錄下面,
pod 要訪問集群的時候,它是怎么來利用這個檔案的呢?我們看一下下面的代碼截圖:

file

我們在 Go 里面實作 Pod 訪問 K8s 集群時,一般直接會調一個 InClusterConfig 方法,來生成這個訪問服務 Client 的一些資訊,然后可以看一下,最后這個 Config 里面有兩部分資訊:

  • 一個是 tlsClientConfig,這個主要是用于 ca.crt 校驗服務端;
  • 第二個是 Bearer Token,這個就是 pod 的身份認證,在服務端,會利用 token 對 pod 進行一個身份認證,

再次回到上圖左側,認證完之后 pod 的身份資訊會有兩部分:一個是 Group,一個是 User,身份認證是就是認證這兩部分資訊,接著可以使用 RBAC 功能,對 pod 進行一個授權管理,

假如 RBAC 沒有配置的話,默認的 pod 具有資源 GET 權限,就是可以從所屬的 K8s 集群里 get 資料,如果是需要更多的權限,那么就需要自行配置 RBAC ,RBAC 的相關知識,我們在后面的課程里面會詳細介紹,大家可以關注一下,

五、Resource

容器資源配合管理

下面介紹一下 Resource,即:容器的一個資源配置管理,

目前內部支持型別有三種:CPU、記憶體,以及臨時存盤,當用戶覺得這三種不夠,有自己的一些資源,比如說 GPU,或者其他資源,也可以自己來定義,但配置時,指定的數量必須為整數,目前資源配置主要分成 request 和 limit 兩種型別,一個是需要的數量,一個是資源的界限,CPU、記憶體以及臨時存盤都是在 container 下的 Resource 欄位里進行一個宣告,

file

舉個例子,wordpress 容器的資源需求,一個是 request ,一個是 limits,它分別對需要的資源和資源臨界進行一個宣告,

Pod 服務質量 (QoS) 配置

根據 CPU 對容器記憶體資源的需求,我們對 pod 的服務質量進行一個分類,分別是 Guaranteed、Burstable 和 BestEffort,

  • Guaranteed :pod 里面每個容器都必須有記憶體和 CPU 的 request 以及 limit 的一個宣告,且 request 和 limit 必須是一樣的,這就是 Guaranteed;
  • Burstable:Burstable 至少有一個容器存在記憶體和 CPU 的一個 request;
  • BestEffort:只要不是 Guaranteed 和 Burstable,那就是 BestEffort,

那么這個服務質量是什么樣的呢?資源配置好后,當這個節點上 pod 容器運行,比如說節點上 memory 配額資源不足,kubelet會把一些低優先級的,或者說服務質量要求不高的(如:BestEffort、Burstable)pod 驅逐掉,它們是按照先去除 BestEffort,再去除 Burstable 的一個順序來驅逐 pod 的,

六、SecurityContext

SecurityContext 介紹

SecurityContext 主要是用于限制容器的一個行為,它能保證系統和其他容器的安全,這一塊的能力不是 Kubernetes 或者容器 runtime 本身的能力,而是 Kubernetes 和 runtime 通過用戶的配置,最后下傳到內核里,再通過內核的機制讓 SecurityContext 來生效,所以這里介紹的內容,會比較簡單或者說比較抽象一點,

SecurityContext 主要分為三個級別:

  • 第一個是容器級別,僅對容器生效;
  • 第二個是 pod 級別,對 pod 里所有容器生效;
  • 第三個是集群級別,就是 PSP,對集群內所有 pod 生效,

權限和訪問控制設定項,現在一共列有七項(這個數量后續可能會變化):

  1. 第一個就是通過用戶 ID 和組 ID 來控制檔案訪問權限;
  2. 第二個是 SELinux,它是通過策略配置來控制用戶或者行程對檔案的訪問控制;
  3. 第三個是特權容器;
  4. 第四個是 Capabilities,它也是給特定行程來配置一個 privileged 能力;
  5. 第五個是 AppArmor,它也是通過一些組態檔來控制可執行檔案的一個訪問控制權限,比如說一些埠的讀寫;
  6. 第六個是一個對系統呼叫的控制;
  7. 第七個是對子行程能否獲取比父親更多的權限的一個限制,

最后其實都是落到內核來控制它的一些權限,

file

上圖是對 pod 級別和容器級別配置 SecurityContext 的一個例子,如果大家對這些內容有更多的需求,可以根據這些資訊去搜索更深入的資料來學習,

七、InitContainer

InitContainer 介紹

接下來看一下 InitContainer,首先介紹 InitContainer 和普通 container 的區別,有以下三點內容:

  1. InitContainer 首先會比普通 container 先啟動,并且直到所有的 InitContainer 執行成功后,普通 container 才會被啟動;
  2. InitContainer 之間是按定義的次序去啟動執行的,執行成功一個之后再執行第二個,而普通的 container 是并發啟動的;
  3. InitContainer 執行成功后就結束退出,而普通容器可能會一直在執行,它可能是一個 longtime 的,或者說失敗了會重啟,這個也是 InitContainer 和普通 container 不同的地方,

根據上面三點內容,我們看一下 InitContainer 的一個用途,它其實主要為普通 container 服務,比如說它可以為普通 container 啟動之前做一個初始化,或者為它準備一些組態檔, 組態檔可能是一些變化的東西,再比如做一些前置條件的校驗,如網路是否聯通,

file

上面的截圖是 flannel 組件的 InitContainer 的一個配置,它的 InitContainer 主要是為 kube-flannel 這個普通容器啟動之前準備一些網路組態檔,

本文總結

  • ConfigMap 和 Secret: 首先介紹了 ConfigMap 和 Secret 的創建方法和使用場景,然后對 ConfigMap 和 Secret 的常見使用注意點進行了分類和整理,最后介紹了私有倉庫鏡像的使用和配置;
  • Pod 身份認證: 首先介紹了 ServiceAccount 和 Secret 的關聯關系,然后從原始碼角度對 Pod 身份認證流程和實作細節進行剖析,同時引出了 Pod 的權限管理(即 RBAC 的配置管理);
  • 容器資源和安全: 首先介紹了容器常見資源型別 (CPU/Memory) 的配置,然后對 Pod 服務質量分類進行詳細的介紹,同時對 SecurityContext 有效層級和權限配置項進行簡要說明;
  • InitContainer: 首先介紹了 InitContainer 和普通 container 的區別以及 InitContainer 的用途,然后基于實際用例對 InitContainer 的用途進行了說明,

阿里巴巴云原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術公眾號,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63688.html

標籤:其他

上一篇:輕松部署calico

下一篇:Kubernetes 學習筆記(二):本地部署一個 kubernetes 集群

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more