溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

【讀書筆記】12 牛刀小試:我的第一個(gè)容器化應(yīng)用

發(fā)布時(shí)間:2020-06-22 04:16:00 來源:網(wǎng)絡(luò) 閱讀:379 作者:筑夢攻城獅 欄目:云計(jì)算

《深入剖析Kubernetes - 12? 牛刀小試:我的第一個(gè)容器化應(yīng)用》


主要包括2個(gè)步驟:制作鏡像 和 編寫yaml配置文件(或json)

以 nginx 的deployment 為例

apiVersion:?apps/v1?
kind:?Deployment?
metadata:?
??name:?nginx-deployment?
spec:?
??selector:?
????matchLabels:?
??????app:?nginx?
??replicas:?2?
?template:?
???metadata:?labels:?
?????app:?nginx?
???spec:?
?????containers:?
?????-?name:?nginx?
???????image:?nginx:1.7.9?
???????ports:?
???????-?containerPort:?80


其中kind 字段聲明類型,例如deployment、daemonset 等,metadata 是具體描述,例如name、namespace、labels、annotations等

spec.template 描述了pod 的細(xì)節(jié),即容器配置的模板


創(chuàng)建deployment

$?kubectl?create?-f?nginx-deployment.yaml


查看deployment運(yùn)行情況

$?kubectl?get?pods?-l?app=nginx?
NAME?READY?STATUS?RESTARTS?AGE?n
ginx-deployment-67594d6bf6-9gdvr?1/1?Running?0?10m?
nginx-deployment-67594d6bf6-v6j7w?1/1?Running?0?10m


查看API 對象細(xì)節(jié)

kubectl?describe?pod?nginx-deployment-67594d6bf6-9gdvr
Name:???????????????nginx-deployment-67594d6bf6-9gdvr
Namespace:??????????default
Priority:???????????0
PriorityClassName:??<none>
Node:???????????????node-1/10.168.0.3
Start?Time:?????????Thu,?16?Aug?2018?08:48:42?+0000
Labels:?????????????app=nginx
????????????????????pod-template-hash=2315082692
Annotations:????????<none>
Status:?????????????Running
IP:?????????????????10.32.0.23
Controlled?By:??????ReplicaSet/nginx-deployment-67594d6bf6
...
Events:

??Type?????Reason??????????????????Age????????????????From???????????????Message

??----?????------??????????????????----???????????????----???????????????-------
??
??Normal???Scheduled???????????????1m?????????????????default-scheduler??Successfully?assigned?default/nginx-deployment-67594d6bf6-9gdvr?to?node-1
??Normal???Pulling?????????????????25s????????????????kubelet,?node-1????pulling?image?"nginx:1.7.9"
??Normal???Pulled??????????????????17s????????????????kubelet,?node-1????Successfully?pulled?image?"nginx:1.7.9"
??Normal???Created?????????????????17s????????????????kubelet,?node-1????Created?container
??Normal???Started?????????????????17s????????????????kubelet,?node-1????Started?container


其中Events 字段可用于后期問題定位,常見的有

(1)找不到合適的node節(jié)點(diǎn)調(diào)度pod,包括

node節(jié)點(diǎn)label匹配不上;

node節(jié)點(diǎn)資源不夠分配;

node節(jié)點(diǎn)設(shè)置了污點(diǎn);

node節(jié)點(diǎn)網(wǎng)絡(luò)異常;


(2) 鏡像拉取失敗

升級容器鏡像版本

...????
????spec:
??????containers:
??????-?name:?nginx
????????image:?nginx:1.8?#?這里被從?1.7.9?修改為?1.8
????????ports:
??????-?containerPort:?80


執(zhí)行

$?kubectl?replace?-f?nginx-deployment.yaml

更常見的方式是,通過apply 執(zhí)行相關(guān)操作,無論是創(chuàng)建還是修改都可以通過該命令完成

$?kubectl?apply?-f?nginx-deployment.yaml?
#?修改?nginx-deployment.yaml?的內(nèi)容?
$?kubectl?apply?-f?nginx-deployment.yaml

下面是一個(gè)volume掛載的例子

通常分為emptyDir 和 hostPath 兩種,兩者的區(qū)別在于前者不需要指定宿主機(jī)目錄(源目錄),k8s 會在宿主機(jī)上創(chuàng)建一個(gè)臨時(shí)目錄并掛載進(jìn)去;而后者,則需要顯式聲明掛載的源目錄,例如將宿主機(jī)的/usr/local/nginx/html 目錄掛載到容器同樣的位置


emptyDir的例子

volumes:
??????-?name:?nginx-vol
????????emptyDir:?{}
hostPath的例子
...???
????volumes:
??????-?name:?nginx-vol
????????hostPath:?
??????????path:?/var/data


進(jìn)入容器

$?kubectl?exec?-it?nginx-deployment-5c678cfb6d-lg9lw?--?/bin/bash?
#?ls?/usr/share/nginx/html


刪除容器

$?kubectl?delete?-f?nginx-deployment.yaml


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI