k8s本地倉庫搭建

2022-07-17 01:00:11 字數 3479 閱讀 6674

自己本地搭建了個k8s集群後,因為沒有設定本地倉庫,以至於每次打包好的映象服務都需要每個節點傳一遍,很不方便,於是自己搭建了乙個本地倉庫供k8s集群使用。

1.拉取倉庫容器映象

docker pull registry
2.修改/etc/docker/daemon.json

3.重啟docker以及容器

systemctl daemon-reload && systemctl restart docker && docker start $(docker ps -aq)
4.啟動倉庫容器

docker run -d -p 9876:5000 -v /opt/data/registry:/var/lib/registry docker.io/registry
因為倉庫容器會將上傳的映象儲存在/var/lib/registry,所以最好掛乙個稍微大一點的盤放這用以存放映象。

5.上傳映象

因為現在已經無法修改預設倉庫了,所以上傳時候必須先打tag,再按tag上傳

指定api版本,此值必須在kubectl apiversion中

kind: deployment #

指定建立資源的角色/型別

metadata: #

資源的元資料/屬性

name: redis #

資源的名字,在同乙個namespace中必須唯一

labels: #

設定資源的標籤

version: v1

kubernetes.io/cluster-service: "

true

"annotations:

#自定義註解列表

name: string #

自定義註解名字

spec: #

specification of the resource content 指定該資源的內容

replicas: 1selector:

matchlabels:

redis: master

#節點擊擇,先給主機打標籤kubectl label nodes kube-node1 zone=node1

template:

metadata:

labels:

redis: master

#模板名稱必填

#restartpolicy: always #表明該容器一直執行,預設k8s的策略,在此容器退出後,會立即建立乙個相同的容器

spec:

containers:

- name: redis #

容器的名字

image: 192.168.1.188:9876/redis:base #

容器使用的映象位址

imagepullpolicy: ifnotpresent #

三個選擇always、never、ifnotpresent,每次啟動時檢查和更新(從registery)images的策略,

#always,每次都檢查

#never,每次都不檢查(不管本地是否有)

#ifnotpresent,如果本地有就不檢查,如果沒有就拉取

command: ['

/opt/start.sh

'] #

啟動容器的執行命令,將覆蓋容器中的entrypoint,對應dockefile中的entrypoint

args: [""] #

啟動容器的命令引數,對應dockerfile中cmd引數

resources: #

資源管理

requests: #

容器執行時,最低資源需求,也就是說最少需要多少資源容器才能正常執行

cpu: 0.2 #

cpu資源(核數),兩種方式,浮點數或者是整數+m,0.1=100m,最少值為0.001核(1m)

memory: 32mi #

記憶體使用量

limits: #

資源限制

cpu: 1memory: 1000mi

ports:

- containerport: 6379 #

容器開發對外的埠

名稱protocol: tcp

lifecycle:

#生命週期管理

poststart: #

容器執行之前執行的任務

exec

: command: [

"bash"]

prestop:

#容器關閉之前執行的任務

exec

: command: [

"bash"]

volumemounts:

#掛載持久儲存卷

- name: redis-data #

掛載裝置的名字,與volumes[*].name 需要對應

mountpath: /opt/redis/data #

掛載到容器的某個路徑下

readonly: false

volumes:

#定義一組掛載裝置

- name: redis-data #

定義乙個掛載裝置的名字

hostpath:

path: /opt/redis/data #

掛載裝置型別為hostpath,路徑為宿主機下的/opt,這裡裝置型別支援很多種

kubectl create -f deployment.yaml -n kube-system

#非常迅速的就可以拉起pod,當然前提是已經打好標籤

kubectl label nodes centos02 redis=master

如果需要埠被本地的除錯服務訪問,還可以再部署個service暴露服務。

apiversion: v1

kind: service

metadata:

name: redis-service

spec:

type: nodeport

selector:

redis: master

ports:

-protocol: tcp

port: 6379nodeport: 30001

k8s本地環境搭建

提前安裝docker,學習使用絕大部分的場景使用的是docker驅動,而且k8s學習與docker相一致。不要使用docker desktop for mac windows 中的 k8s,其安裝配置在國內 因為網路問題 是乙個天坑,浪費時間生命,還會搞的docker下一堆映象和容器,影響docke...

k8s搭建集群

k8s由兩種型別資源組成 分別是 master 和 nodes k8s的集群部署方式有三種 1.kubeadm 2.minikube 3.二進位製包 前兩種為自動部署,簡化操作。說一說手動部署的 二進位製包 k8s集群部署步驟 1.關閉防火牆 firewall cmd state systenctl...

K8s 集群搭建

目前生產部署 kubernetes 集群主要有兩種方式 kubeadm 與 二進位製包 一 kubeadm 概念 kubeadm 是乙個 k8s 部署工具,提供 kubeadm init 和 kubeadm join,用於快速部署 kubernetes 集群。官網 二 二進位製包 總之 kubead...