大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Kubernetes基本的使用方法

Kubernetes基本的使用方法

更新時(shí)間:2022-12-21 10:27:32 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1299次

kubectl是Kubernetes集群的命令行工具,通過kubectl能夠?qū)罕旧磉M(jìn)行管理,并能夠在集群上進(jìn)行容器化應(yīng)用的安裝部署.

K8s 的 Apiserver 是集群控制的入口,k8s 集群管理要在 master 節(jié)點(diǎn)進(jìn)行,即訪問部署的 Apiserver。kubectl 命令默認(rèn)訪問本機(jī)的 Apiserver 的 8080 端口。假如在 k8s 啟動(dòng)了 kubelet 服務(wù)的node 節(jié)點(diǎn),想使用 k8s 集群管理命令操作。會(huì)提示如下:

常規(guī)用法

1.node 節(jié)點(diǎn)管理

(1)查看節(jié)點(diǎn)

$ kubectl get no/nodes

(2)刪除一個(gè)節(jié)點(diǎn)前,先驅(qū)趕掉上面的pod

$ kubectl drain slave2 --delete-local-data

(3)刪除slave2節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)如果從新啟動(dòng)kubelet服務(wù)的話,在master節(jié)點(diǎn)還是可以看到的該節(jié)點(diǎn)的

$ kubectl delete node slave2

k8s刪除一個(gè)節(jié)點(diǎn)使用以下命令

其實(shí)以上命令是通用的,可以進(jìn)行任何資源的刪除:

kubectl delete [type] [typename],type 是資源類型,可以是 node, pod, rs, rc, deployment, service 等等,typename是這個(gè)資源的名稱

(4)查看資源概況

$ kubectl describe nodes
$ kubectl describe node slave1

2.namespace 命名空間管理

命名空間是一個(gè)抽象出來的概念,在一個(gè)命名空間中,pod名稱不允許重復(fù)。這個(gè)命名空間如果我們把他想象成我們的環(huán)境可能更好理解。我們的微服務(wù)項(xiàng)目需要部署到開發(fā)、測(cè)試、生產(chǎn)環(huán)境等。那這時(shí)候我們就可以定義3個(gè)命名空間為 dev、test、product。每個(gè)環(huán)境都要部署一套微服務(wù)容器。Pod名稱在不同的 namespace 中是相同的。或者也可以把 Namespace 和 Pod 理解成數(shù)據(jù)庫和表的關(guān)系。

(1)查看命名空間

(2)創(chuàng)建命名空間

方式1:使用命令創(chuàng)建

[root@master local]# kubectl create namespace esign-dev
namespace "esign-dev" created

方式2:配置文件創(chuàng)建命名空間

編輯配置文件:namespace-test.yaml

apiVersion: v1    #api版本號(hào)
kind: Namespace    #指定類型為Namespace
metadata:     #元數(shù)據(jù)描述
 name: test    #指定namespace名稱

創(chuàng)建namespace

[root@master local]# kubectl apply -f ./namespace-test.yaml 
namespace "test" created

(3)刪除命名空間

刪除命名空間時(shí)會(huì)同時(shí)刪除該空間下所有資源,就好像數(shù)據(jù)庫和表的關(guān)系。開發(fā)中要謹(jǐn)慎操作,同時(shí)系統(tǒng)命名空間不會(huì)被刪除

3.pod 資源管理

(1)Pod 生命周期

pod生命周期:

Pending:API Server已經(jīng)創(chuàng)建了該P(yáng)od,但Pod中的一個(gè)或多個(gè)容器的鏡像還沒有創(chuàng)建,包括鏡像下載過程

Running:Pod內(nèi)所有容器已創(chuàng)建,且至少一個(gè)容器處于運(yùn)行狀態(tài)、正在啟動(dòng)狀態(tài)或正在重啟狀態(tài)

Completed:Pod內(nèi)所有容器均成功執(zhí)行退出,且不會(huì)再重啟

Failed :Pod內(nèi)所有容器均已退出,但至少一個(gè)容器退出失敗

Unknown:由于某種原因無法獲取Pod狀態(tài),例如網(wǎng)絡(luò)通信不暢

pod失效時(shí)的重啟策略:

Always:當(dāng)容器失效時(shí),立馬由kubelet自動(dòng)重啟該容器

OnFailure:當(dāng)容器終止運(yùn)行且退出碼不為0時(shí),由kubelet自動(dòng)重啟該容器

Never:不論容器運(yùn)行狀態(tài)如何,kubelet都不會(huì)重啟該容器

*對(duì)于Always這種策略,容器只要掛了,就會(huì)立即重啟,這樣是很耗費(fèi)資源的。所以Always重啟策略會(huì)這么做:第一次容器掛了立即重啟,如果再掛了就要延時(shí)10s重啟,第三次掛了就等20s重啟...... 依次類推

(2)創(chuàng)建 pod 容器

編輯 demo-rc/yaml 文件:

鏡像192.168.56.104:5000/nginx,是我基于Nginx鏡像重新tag,并上傳到docker私服的。這樣做是因?yàn)?k8s 會(huì)把構(gòu)建的 Pod 隨機(jī)分配到 node節(jié)點(diǎn)去處理,無論是哪個(gè) node去構(gòu)建 Pod都要能保證能拉到鏡像,所以必須用私服統(tǒng)一管理鏡像。

鏡像拉取策略 imagePullPolicy:

Always - 每次都要從私服pull

IfNotPresent - 本地有就不從私服拉(這是默認(rèn)值)

Never - 從不pull

關(guān)于鏡像拉取,Pod 構(gòu)建 docker 容器時(shí),會(huì)執(zhí)行docker pull 將鏡像從私服拉到本地。且其默認(rèn)執(zhí)行策略是如果本地有就不再pull。所以如果我們用jenkins構(gòu)建應(yīng)用服務(wù)時(shí),首先需要將鏡像上傳到私服,且 Pod 的執(zhí)行策略也必須是每次都要從私服Pull,否則它Pull 一次之后。將不再拉取最新構(gòu)建的鏡像。

apiVersion: v1    #描述的是Api版本
kind: Pod    #指定的是Pod類型
metadata:    #描述該P(yáng)od的元數(shù)據(jù)信息
  name: nginx    #Pod名稱    
  namespace: esign-dev    #指定該P(yáng)od所屬的命名空間,這個(gè)命名空間需要提前創(chuàng)建好。否則報(bào)錯(cuò)
  labels:
    owner: jpjinga    #給Pod添加自定義標(biāo)簽,key、value都是自定義
spec:
  containers:
    - name: nginx
      image: 192.168.56.104:5000/nginx:latest
      imagePullPolicy: Always    #一直從遠(yuǎn)程倉庫拉取
      ports:
      - containerPort: 80    #容器端口
        hostPort: 8081    #映射的主機(jī)端口
        name: web
        protocol: TCP

創(chuàng)建并啟動(dòng) pod

獲取Pod

kubectl get po -n esign-dev    #獲取指定命名空間的Pod資源
kubectl get po --all-namespaces -o wide    #獲取所有命名空間的Pod資源

我們看一下Pod啟動(dòng)后的具體信息:

kubectl describe pod nginx -n esign-dev

我們切換到主機(jī)名為 slave1(192.168.56.102)的節(jié)點(diǎn),查看運(yùn)行容器。可以發(fā)現(xiàn) k8s 運(yùn)行的是一個(gè)Pod基礎(chǔ)容器,我們?cè)谏弦黄罱╧8s集群node節(jié)點(diǎn)時(shí),配置過這個(gè)Pod基礎(chǔ)鏡像。Pod是K8s管理的最小單元。在這個(gè)Pod里運(yùn)行的是Nginx容器。主機(jī)對(duì)Pod內(nèi)部容器的端口映射是:8081->80。

我們用瀏覽器來訪問一下這個(gè)Nginx,可以看到訪問正常。

(3)查看容器運(yùn)行狀態(tài)

ready:Pod準(zhǔn)備情況,準(zhǔn)備就緒/Pod包含容器的總數(shù)目

restarts:Pod重啟次數(shù)

age:Pod存活時(shí)間

(4)查看Pod詳細(xì)信息

說明:查看的pod所屬命名空間namespace != dufault 時(shí),需要-n 指定其命名空間才可以看到

kubectl describe pod [podname] -n [namespace]

(5)更新Pod

更新:

kubectl replace -f demo-rc.yaml

由于Pod的很多屬性沒辦法修改,比如容器鏡像,這時(shí)候可以采用--force參數(shù)

kubectl replace --force -f demo-ng.yaml

看運(yùn)行效果,就相當(dāng)于刪掉后重新構(gòu)建了一個(gè)Pod:

(6)進(jìn)入Pod中的容器

命名空間非默認(rèn)時(shí)需要-n 指定

如果Pod內(nèi)部只有一個(gè)容器,不需要指定 -c ,默認(rèn)進(jìn)入第一個(gè)容器。

kubectl exec -it [pod-name] -n [namespace] -c [container-name] /bin/bash 

(7)Pod與標(biāo)簽

添加標(biāo)簽

kubectl label pod [podname] -n [namespace] key=value    #指定pod,添加自定義標(biāo)簽

查詢Pod時(shí),展示標(biāo)簽內(nèi)容:

(8)刪除Pod

-n 刪除指定命名空間下的Pod容器

如不指定,則刪除的是 namespace=default 下的Pod容器

kubectl delete pod [podname] -n [namespace]    # 刪除一個(gè)Pod
kubectl delete pod --all -n [namespace]    # 刪除所有Pod

(9)查看容器日志,參數(shù)-f 可以監(jiān)控實(shí)時(shí)日志

kubectl logs [-f] -n [namespace] [podName] -c [containerName]

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久青草免费91观看 | 日韩精品久久不卡中文字幕 | 国产天堂 | 日日射影院 | 欧美99视频 | 日韩美女va在线毛片免费知 | 五月天色中色 | 久久经典免费视频 | 99热这里只有精品免费 | 免费网站看v片在线成人国产系列 | 亚洲成在人网站天堂一区二区 | 99热最新 | 欧美啊v在线观看 | 欧美日韩一区二区三 | 四虎4hu永久免费视频大全 | 免费一级毛片在播放视频 | 亚洲精品成人一区 | 久久免费国产视频 | 精品久久中文网址 | 欧美伦乱 | 国产午夜精品一区二区 | 精品一久久香蕉国产线看观看下 | 91日本在线精品高清观看 | 色视频一区二区三区 | 欧美在线操 | 欧美成人另类bbw | 久久精品国产精品青草 | 99热这里只有精品3 99热这里只有精品4 | 99视频精品全部国产盗摄视频 | 九九热国产在线 | 国产福利精品在线观看 | 成人亚洲综合 | 不卡精品国产_亚洲人成在线 | 免费无毒片在线观看 | 中文字幕日韩女同互慰视频 | 国产精品视频第一区二区三区 | 亚洲va国产日韩欧美精品色婷婷 | 国产欧美日韩一区二区三区视频 | 农村三级孕妇视频在线 | 精品一区二区乱码久久乱码 | 日日摸夜夜添夜夜添久久 |