您好,登錄后才能下訂單哦!
小編給大家分享一下K8S基本使用方法有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
K8s集群的最小單位是pod,一個pod里面可以包含多的容器,通常以yaml文件去創(chuàng)建pod,也可以使用run命令直接創(chuàng)建
創(chuàng)建pod:命令格式: kubectl create –f [yaml文件] 使用RUN命令直接創(chuàng)建:命令格式:kubectl run –i –t [pod名稱] –image=[鏡像名稱]
列1:通過ymal文件創(chuàng)建一個Redis-master pod
redis-master-controller.yaml 文件內(nèi)容: apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-master spec: replicas: selector: name: redis-master template: metadata: labels: name: redis-master spec: containers: - name: master image: kubeguide/redis-master ports: - containerPort: 6379 kubectl create -f redis-master-controller.yaml
例2: 使用RUN命令直接創(chuàng)建
kubectl run -i -t busybox --image=busybox kubectl run -i -t busybox --image=busybox --replicas=5 --replicas 指定副本數(shù) 常用參數(shù)
命令格式: kubectl delete pod/po [pod名稱]
此時雖然顯示pod已經(jīng)刪除,但是你再次查看pod的時候會發(fā)現(xiàn)還是有一個名為busybox**的pod存在,這是因為k8s的安全機制,k8s保證了定義的pod副本數(shù)的恒定,加入一個pod副本數(shù)為5那么有5個pod提供服務(wù),pod壞掉或者刪除掉k8s的安全機制將檢查副本數(shù)量如果pod數(shù)量少于5 那么k8s將會自動創(chuàng)建pod使之保持在數(shù)量為5個。
徹底刪除:
第一種方式是重新編輯yaml文件 如果文件指定多個副本數(shù)將其改為0 第二種方式使用 kubectl delete –f m命令
POD 查看
總體查看
命令 kubectl get pods 進行查看
相對詳細信息查看
kubectl get pod -o wide
更加詳細的信息
命令格式: kubectl describe [po/deploy] [名稱]
Pod是k8s集群的最小單元,一個pod里面可以包含多的容器,那么所有屬于這個pod的容器都會運行在一個節(jié)點上面。Pod封裝了一個或多個應(yīng)用程序的容器(比如nginx等),存儲資源,唯一的網(wǎng)絡(luò)IP以及管理容器的一些選項 Pod標示的是一個部署單元,可以理解為Kubernetes中的應(yīng)用程序的單個實例,它可能由單個容器組成,也可能由少量緊密耦合并共享資源的容器組成。如果多個容器在同一Pod下他們公用一個IP所以不能出現(xiàn)重復(fù)的端口號,比如在一個Pod下運行兩個nginx就會有一個容器異常,一個Pod下的多個容器可以使用localhost來訪問對方端口應(yīng)為Pod是最小的單元如果在Pod中容器出現(xiàn)異常終止了是不會重啟,在實際使用場景下基本不會直接使用Pod而是使用Deployment部署自己的應(yīng)用
deployment 是什么
在早期版本使用Replication Controller對Pod副本數(shù)量進行管理,在新的版本中官方推薦使用Deployment來代替RC,Deployment相對RC有這些好處
特點:
Deployment擁有更加靈活強大的升級、回滾功能,并且支持滾動更新
使用Deployment升級Pod只需要定義Pod的最終狀態(tài),k8s會為你執(zhí)行必要的操作(RC要自己定義如何操作)
進入到容器內(nèi)部操作
K8s進入pod指令和 docker 進入容器指定類似
Docker進入容器指令為:
docker exec –it 容器ID/name sh/bash
K8s進入到pod中容器中指令:
kubectl exec –it pod-name sh/bash
拷貝一個文件到pod指定目錄
命令:kubectl cp file/dir <some-pod>:某目錄
pod 與 service的關(guān)系
前面寫到創(chuàng)建了POD,但是有了POD依然不能提供服務(wù),此時輪到了我們service上場了,專業(yè)一點講叫服務(wù)發(fā)布。服務(wù)發(fā)布是創(chuàng)建了POD或者deployment 然后還需要創(chuàng)建service發(fā)布出去。 關(guān)聯(lián)pod和service 是通過 labels 標簽實現(xiàn)的。為關(guān)聯(lián)的準確性可以添加多個標簽
例:我們創(chuàng)建一個redis-master的POD 然后在創(chuàng)建一個redis-master 的服務(wù)并發(fā)布
發(fā)布pod
創(chuàng)建pod: vim redis-master-controller.yaml apiVersion: v1 kind: ReplicationController metadata: name: redis-master labels: name: redis-master spec: replicas: selector: name: redis-master template: metadata: labels: name: redis-master spec: containers: - name: master image: kubeguide/redis-master ports: - containerPort: 6379
發(fā)布Service
vim redis-master-service.yaml apiVersion: v1 kind: Service metadata: name: redis-master labels: name: redis-master spec: ports: - port: 6379 targetPort: 6379 selector: name: redis-master
服務(wù)的創(chuàng)建方式與pod相同: 使用 kubectl create –f [x-service.yaml] kubectl create -f redis-master-service.yaml
查看服務(wù)
命令 kubectl get svc –o wide 服務(wù)的CLUSTER-IP 是服務(wù)的 VIP
查看詳細的描述信息:
Kubectl describe svc [service-name]
銷毀服務(wù)
service的銷毀和pod的銷毀方法相同 命令: kubectl delete –f [x-service.yaml]
注意:創(chuàng)建完整的容器提供服務(wù)包含 POD(Deployment)和 Services,建議Services在Pod之前創(chuàng)建。
方法一 使用命令操作副本數(shù)量
例:創(chuàng)建一個redis-slave 應(yīng)用容器 副本數(shù)量指定為2 然后通過命令進行動態(tài)擴容和縮容
vim redis-slave.yaml apiVersion: v1 kind: ReplicationController metadata: name: redis-slave labels: name: redis-slave spec: replicas: 2 selector: name: redis-slave template: metadata: labels: name: redis-slave spec: containers: - name: slave image: kubeguide/guestbook-redis-slave env: - name: GET_HOSTS_FROM value: env ports: - containerPort: 6379 kubectl create -f redis-slave.yaml
上面的yaml文件是定義了2個pod副本,我們通過命令擴容到5個
使用scale命令 kubectl scale rc redis-slave --replicas=5
此時通過 kubectl get pod -o wide 命令去查看,你會發(fā)現(xiàn)有五個redis-slave pod了
縮容的方式一樣 在命令里面指定 --replicas 的數(shù)量即可實現(xiàn)
命令 :kubectl edit rc/deployment [rc/deployment-name]
例:修改應(yīng)用配置 我們上一步將replicas 數(shù)量設(shè)置為5 現(xiàn)在將他改為6 保存退出驗證
kubectl edit rc redis-slave
重構(gòu)命令:kubectl replace -f x.yaml
修改配置文件進行重構(gòu)即可,這個是需要釋放已存在的pod,然后創(chuàng)建新的pod的過程
查看全部的包括宿主機的
命令:kubectl get endpoints
只查看rc/deploy相關(guān)的端口
kubectl get ep [rc/deploy-name]
pod的狀態(tài)
使用k8s創(chuàng)建pod的幾種狀態(tài)
Pending:Pod已經(jīng)被系統(tǒng)接收,準備下載鏡像。 Running:Pod已經(jīng)分配到節(jié)點,并且所有容器已創(chuàng)建。至少有一個容器仍在運行、正在啟動或重新啟動。 Successed:Pod中的所有容器已成功終止,不會重新啟動。 Failed:Pod中的所有容器已終止,并且至少有一個容器已經(jīng)終止。也就是說,容器退出非零狀態(tài)或被系統(tǒng)終止。 Unknown:由于某種原因,無法獲得Pod狀態(tài),通常是由于與Pod所在主機通信時出現(xiàn)錯誤。
查看所有namespace
命令:kubectl get namespace/ns(ns 為簡寫)
注:我們的在未指定namespace創(chuàng)建Pod 會默認使用default 這個命名空間
給pod指定namespace
在給pod指定之前我們k8s集群默認是只有default 這個命名空間,所以我們?nèi)绻褂闷渌臻g需要先創(chuàng)建命名空間
例: 創(chuàng)建一個名為mynamespace的命名空間
cat mynamespace.yaml apiVersion: v1 kind: Namespace metadata: name: mynamespace 創(chuàng)建命令與創(chuàng)建pod和service相同
yaml 指定namespace示子:
cat pod.yaml apiVersion: v1 kind: Pod metadata: name: busybox1 namespace: mynamespace spec: containers: - image: gcr.io/google_containers/busybox command: - sleep - "3600" name: busybox1 kubectl create -f pod.yaml
創(chuàng)建完pod 此時你使用 kubectl get pod -o wide 或者 kubectl get pod 查看是看不到的,因為這些pod都是在默認空間中的
所以想要查看 mynamespace 空間的pod 需要在查看命令指定namespace空間
命令:
kubectl get pods –n [namespace名稱] 或者 kubectl get pods -o wide –n [namespace名稱]
使用run 命令創(chuàng)建pod指定namespace
kubectl run -i -t busybox --image=busybox --namespace=mynamespace
Kubectl命令行管理對象
創(chuàng)建資源小技巧
當資源可以使用create 創(chuàng)建時,可以使用 -o yaml 和 --dry-run 查看yaml文件如何寫
-o yaml 以yaml格式輸出
--dry-run 測試創(chuàng)建,不會真的創(chuàng)建資源
例:
kubectl create serviceaccount mycount -o yaml --dry-run
另外一種方法導(dǎo)出摸個pod/deploy yaml文件 用于模板文件可以修改為其他的pod/deploy的yaml
kubectl get pods x-pod -o yaml --export
查看 node標簽
kubectl get nodes --show-labels
給node打標簽
kubectl label nodes node1 zone=foo zone 標簽key foo 標簽值
node設(shè)置污點
kubectl taint node node2 node-type=dev:NoExecute
node去污
kubectl taint node node2 node-type:NoExecute-
以上是“K8S基本使用方法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。