主頁 >  其他 > 企業運維實戰之k8s(Volumes卷)初學者必看,點贊關注后期不迷路

企業運維實戰之k8s(Volumes卷)初學者必看,點贊關注后期不迷路

2021-08-03 08:42:00 其他

文章目錄

  • Volumes配置管理
    • emptyDir 示例
    • hostPath 示例
    • NFS 示例
    • NFS PV 示例
    • NFS動態分配PV
    • StatefulSet

Volumes配置管理

  • 容器中的檔案在磁盤上是臨時存放的,這給容器中運行的特殊應用程式帶來一些問題,首先,當容器崩潰時,kubelet 將重新啟動容器,容器中的檔案將會丟失,因為容器會以干凈的狀態重建,其次,當在一個 Pod 中同時運行多個容器時,常常需要在這些容器之間共享檔案, Kubernetes 抽象出 Volume 物件來解決這兩個問題,

  • Kubernetes 卷具有明確的生命周期,與包裹它的 Pod 相同, 因此,卷比 Pod 中運行的任何容器的存活期都長,在容器重新啟動時資料也會得到保留, 當然,當一個 Pod 不再存在時,卷也將不再存在,也許更重要的是,Kubernetes 可以支持許多型別的卷,Pod 也能同時使用任意數量的卷,

  • 卷不能掛載到其他卷,也不能與其他卷有硬鏈接, Pod 中的每個容器必須獨立地指定每個卷的掛載位置,

  • Kubernetes 支持下列型別的卷:
    awsElasticBlockStore 、azureDisk、azureFile、cephfs、cinder、configMap、csi
    downwardAPI、emptyDir、fc (fibre channel)、flexVolume、flocker
    gcePersistentDisk、gitRepo (deprecated)、glusterfs、hostPath、iscsi、local、
    nfs、persistentVolumeClaim、projected、portworxVolume、quobyte、rbd
    scaleIO、secret、storageos、vsphereVolume

emptyDir 示例

當 Pod 指定到某個節點上時,首先創建的是一個 emptyDir 卷,并且只要 Pod 在該節點上運行,卷就一直存在, 就像它的名稱表示的那樣,卷最初是空的, 盡管 Pod 中的容器掛載 emptyDir 卷的路徑可能相同也可能不同,但是這些容器都可以讀寫 emptyDir 卷中相同的檔案, 當 Pod 因為某些原因被從節點上洗掉時,emptyDir 卷中的資料也會永久洗掉
emptyDir 的使用場景:
快取空間,例如基于磁盤的歸并排序,
為耗時較長的計算任務提供檢查點,以便任務能方便地從崩潰前狀態恢復執行,
在 Web 服務器容器服務資料時,保存內容管理器容器獲取的檔案,

vim vol1.yaml

apiVersion: v1
kind: Pod
metadata:
  name: vol1
spec:
  containers:
  - image: busyboxplus
    name: vm1
    command: ["sleep", "300"]
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  - name: vm2
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir:
      medium: Memory
      sizeLimit: 100Mi
kubectl apply -f vol1.yaml

在這里插入圖片描述
進入vm1的sh,在/cache里創建一個index.html檔案并寫入pwc
進入vm2的sh,在/usr/share/nginx/html里查看index.html

kubectl  exec vol1 -it sh  -c vm1
cd cache/
echo pwc > index.html
ctrl+d 退出
kubectl  exec vol1 -it sh  -c vm2
cat /usr/share/nginx/html/index.html

在這里插入圖片描述在/cache寫入一個200M的檔案
在這里插入圖片描述可以看到檔案超過sizeLimit,則一段時間后(1-2分鐘)會被kubelet evict掉,之所以不是“立即”被evict,是因為kubelet是定期進行檢查的,這里會有一個時間差,
在這里插入圖片描述

hostPath 示例

hostPath 卷能將主機節點檔案系統上的檔案或目錄掛載到您的 Pod 中, 雖然這不是大多數 Pod 需要的,但是它為一些應用程式提供了強大的逃生艙,

hostPath 的一些用法有:
運行一個需要訪問 Docker 引擎內部機制的容器,掛載 /var/lib/docker 路徑,
在容器中運行 cAdvisor 時,以 hostPath 方式掛載 /sys,
允許 Pod 指定給定的 hostPath 在運行 Pod 之前是否應該存在,是否應該創建以及應該以什么方式存在,

vim vol2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      path: /data
      type: DirectoryOrCreate

查看pod調度節點是否創建相關目錄

查看到生成的pod,名為test-pd 在server4上
在這里插入圖片描述

kubectl  exec test-pd -it sh

在這里插入圖片描述

在這里插入圖片描述

NFS 示例

vim vol3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 172.25.21.1
      path: /nfs/mnt

在你所有k8s集群中的主機都進行下面這些操作

yum install -y nfs-utils
systemctl enable --now nfs
vim /etc/exports     ####這一步只需要在分享/mnt/nfs目錄的主機上
	/mnt/nfs *(rw,no_root_squash)
showmount -e

在掛載的主機
在這里插入圖片描述
在應用yaml檔案的主機
在這里插入圖片描述

kubectl  exec test-pd -it sh

在這里插入圖片描述
在這里插入圖片描述

NFS PV 示例

PersistentVolume(持久卷,簡稱PV)是集群內,由管理員提供的網路存盤的一部分,就像集群中的節點一樣,PV也是集群中的一種資源,它也像Volume一樣,是一種volume插件,但是它的生命周期卻是和使用它的Pod相互獨立的,PV這個API物件,捕獲了諸如NFS、ISCSI、或其他云存盤系統的實作細節,

PersistentVolumeClaim(持久卷宣告,簡稱PVC)是用戶的一種存盤請求,它和Pod類似,Pod消耗Node資源,而PVC消耗PV資源,Pod能夠請求特定的資源(如CPU和記憶體),PVC能夠請求指定的大小和訪問的模式(可以被映射為一次讀寫或者多次只讀),

有兩種PV提供的方式:靜態和動態,
靜態PV:集群管理員創建多個PV,它們攜帶著真實存盤的詳細資訊,這些存盤對于集群用戶是可用的,它們存在于Kubernetes API中,并可用于存盤使用,

動態PV:當管理員創建的靜態PV都不匹配用戶的PVC時,集群可能會嘗試專門地供給volume給PVC,這種供給基于StorageClass,

PVC與PV的系結是一對一的映射,沒找到匹配的PV,那么PVC會無限期得處于unbound未系結狀態,

使用
Pod使用PVC就像使用volume一樣,集群檢查PVC,查找系結的PV,并映射PV給Pod,對于支持多種訪問模式的PV,用戶可以指定想用的模式,一旦用戶擁有了一個PVC,并且PVC被系結,那么只要用戶還需要,PV就一直屬于這個用戶,用戶調度Pod,通過在Pod的volume塊中包含PVC來訪問PV,

釋放
當用戶使用PV完畢后,他們可以通過API來洗掉PVC物件,當PVC被洗掉后,對應的PV就被認為是已經是“released”了,但還不能再給另外一個PVC使用,前一個PVC的屬于還存在于該PV中,必須根據策略來處理掉,

回收
PV的回收策略告訴集群,在PV被釋放之后集群應該如何處理該PV,當前,PV可以被Retained(保留)、 Recycled(再利用)或者Deleted(洗掉),保留允許手動地再次宣告資源,對于支持洗掉操作的PV卷,洗掉操作會從Kubernetes中移除PV物件,還有對應的外部存盤(如AWS EBS,GCE PD,Azure Disk,或者Cinder volume),動態供給的卷總是會被洗掉,

創建PV
vim pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv1
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /mnt/nfs
    server: 172.25.21.1

在這里插入圖片描述
創建PVC

vim pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc1
spec:
  storageClassName: nfs
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

可以看到pv與pvc已經bound

在這里插入圖片描述
Pod掛載PVC
vim pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: pv1
  volumes:
  - name: pv1
    persistentVolumeClaim:
      claimName: pvc1

應用這個yaml

kubectl apply -f pod.yaml

查看這個pod的ip

kubectl get pod -o wide

在這里插入圖片描述
測驗:出現403錯誤
在這里插入圖片描述在掛載的目錄里面創建一個index.html并加入www.westos.org
在這里插入圖片描述
給一個權限
在這里插入圖片描述
測驗:成功
在這里插入圖片描述

NFS動態分配PV

NFS Client Provisioner是一個automatic provisioner,使用NFS作為存盤,自動創建PV和對應的PVC,本身不提供NFS存盤,需要外部先有一套NFS存盤服務,
PV以 ${namespace}-${pvcName}-${pvName}的命名格式提供(在NFS服務器上)
PV回收的時候以 archieved-${namespace}-${pvcName}-${pvName} 的命名格式(在NFS服務器上)
nfs-client-provisioner原始碼地址:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client

vim nfs-client-provisioner.yaml

這個yaml檔案根據自己的ip和nfs掛載的目錄需要自己修改

apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-client-provisioner
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-client-provisioner-runner
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["create", "update", "patch"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: nfs-client-provisioner
roleRef:
  kind: ClusterRole
  name: nfs-client-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-client-provisioner
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-client-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-client-provisioner
    # replace with namespace where provisioner is deployed
    namespace: nfs-client-provisioner
roleRef:
  kind: Role
  name: leader-locking-nfs-client-provisioner
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  labels:
    app: nfs-client-provisioner
  # replace with namespace where provisioner is deployed
  namespace: nfs-client-provisioner
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          image: nfs-subdir-external-provisioner:v4.0.0
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: westos.org/nfs
            - name: NFS_SERVER
              value: 172.25.21.1
            - name: NFS_PATH
              value: /mnt/nfs
      volumes:
        - name: nfs-client-root
          nfs:
            server: 172.25.21.1
            path: /mnt/nfs
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-nfs-storage
provisioner: westos.org/nfs
parameters:
  archiveOnDelete: "true"

應用這個yaml檔案

kubectl apply -f nfs-client-provisioner.yaml

提示缺少namespace

kubectl create namespace nfs-client-provisioner

在這里插入圖片描述再次應用這個yaml檔案,并查看創建出的ns

在這里插入圖片描述
創建pvc

vim test-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim
spec:
  storageClassName: managed-nfs-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

應用這個yaml檔案,創建pvc
在這里插入圖片描述
查看pvc與pv,可以看到已經bound

在這里插入圖片描述
在掛載的目錄可以看到有一個default-test-claim-pvc-68928a34-3b86-4539-bfb7-db31a6cae21b被創建,使用這個claim的會掛載在這個目錄
在這里插入圖片描述
vim pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: pv1
  volumes:
  - name: pv1
    persistentVolumeClaim:
      claimName: test-claim

最后一行改成上面創建的pvc的名字

  claimName: test-claim

在pvc掛載的目錄中寫入一個index.html檔案
在這里插入圖片描述
測驗這個pod:

curl pod-ip

顯示了index.html的內容
在這里插入圖片描述
洗掉pod和pvc
在這里插入圖片描述
可以查看到 pv也同時被洗掉了
在這里插入圖片描述
之前pvc掛載的目錄已經被打包成一個目錄
在這里插入圖片描述
默認的 StorageClass 將被用于動態的為沒有特定 storage class 需求的 PersistentVolumeClaims 配置存盤:(只能有一個默認StorageClass)
如果沒有默認StorageClass,PVC 也沒有指定storageClassName 的值,那么意味著它只能夠跟 storageClassName 的 PV 進行系結,

如何設定默認的 StorageClass

kubectl patch storageclass <your-StorageClass-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

先查看sc的資訊,然后設定這個sc為默認sc,再次查看,name后面增加了(default)

在這里插入圖片描述

StatefulSet

通過Headless Service維持Pod的拓撲狀態

創建Headless service
vim nginx-svc.yaml

apiVersion: v1
kind: Service
metadata:
 name: nginx-svc
 labels:
  app: nginx
spec:
 ports:
 - port: 80
   name: web
 clusterIP: None
 selector:
  app: nginx

在這里插入圖片描述StatefulSet控制器

StatefulSet將應用狀態抽象成了兩種情況:
拓撲狀態:應用實體必須按照某種順序啟動,新創建的Pod必須和原來Pod的網路標識一樣
存盤狀態:應用的多個實體分別系結了不同存盤資料,
StatefulSet給所有的Pod進行了編號,編號規則是:$(statefulset名稱)-$(序號),從0開始,
Pod被洗掉后重建,重建Pod的網路標識也不會改變,Pod的拓撲狀態按照Pod的“名字+編號”的方式固定下來,并且為每個Pod提供了一個固定且唯一的訪問入口,即Pod對應的DNS記錄,

PV和PVC的設計,使得StatefulSet對存盤狀態的管理成為了可能:

vim statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
 name: web
spec:
 serviceName: "nginx-svc"
 replicas: 2
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
     image: nginx
     ports:
     - containerPort: 80
       name: web
     volumeMounts:
       - name: www
         mountPath: /usr/share/nginx/html
 volumeClaimTemplates:
  - metadata:
     name: www
    spec:
     storageClassName: managed-nfs-storage
     accessModes:
     - ReadWriteOnce
     resources:
      requests:
       storage: 1Gi

在這里插入圖片描述在這里插入圖片描述并且在網路檔案系統/mnt/nfs里面可以看到建立出了兩個目錄
在這里插入圖片描述在這兩個目錄中創建index.html并輸入web0和web1
在這里插入圖片描述測驗:
kubectl run demo --image=busyboxplus -it
curl nginx-svc
在這里插入圖片描述

如果想增加或者洗掉pod,直接修改statefulset.yaml里面的replicas: 2,盡量不要取消應用這個yaml檔案的

將replicas: 2改為replicas: 0

重新應用這個yaml檔案,可以看到pod是一個個被洗掉的,最早建的最晚洗掉
在這里插入圖片描述

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

標籤:其他

上一篇:JVM運算元堆疊之堆疊頂快取

下一篇:SpringCloud Hoxton——Ribbon負載均衡服務呼叫

標籤雲
其他(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