自己本地搭建了個k8s集群後,因為沒有設定本地倉庫,以至於每次打包好的映象服務都需要每個節點傳一遍,很不方便,於是自己搭建了乙個本地倉庫供k8s集群使用。
1.拉取倉庫容器映象
docker pull registry2.修改/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如果需要埠被本地的除錯服務訪問,還可以再部署個service暴露服務。#非常迅速的就可以拉起pod,當然前提是已經打好標籤
kubectl label nodes centos02 redis=master
apiversion: v1kind: 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...