k8s中資源管理方式可以劃分為下面的幾種:命令式對象管理、命令式對象配置、聲明式對象配置。
- 命令式對象管理
命令式對象管理:直接使用命令的方式來操作k8s資源, 這種方式操作簡單,但是無法審計和追蹤。
kubectl run nginx-pod --image=nginx:1.17.1 --port=80
- 命令式對象配置
通過命令和配置文件來操作k8s資源,這種方式可以審計和追蹤,但是項目大的時候配置文件多,操作麻煩。
kubectl create/patch/delete -f nginx-pod.yaml
- 聲明式對象配置
通過apply命令和配置文件去操作k8s資源,這種方式操作簡單,支持目錄操作,但是意外的情況難以調(diào)試。
kubectl apply -f nginx-pod.yaml
kubectl 命令
基本語法
kubectl [command] [type] [name] [flags]
○ command:指定要對資源執(zhí)行的操作,如:create、get 、delete 等。
○ type:指定資源的類型,如:deployment 、pod 、service 等。
○ name:指定資源的名稱,名稱大小寫敏感。
○ flags:指定額外的可選參數(shù)。
namespace 操作相關(guān)
- 獲取所有命名空間
kubectl get namespace(ns)
- 創(chuàng)建命名空間
kubectl create namespace(ns) hello
- 刪除命名空間(默認(rèn)命名空間無法刪除)
kubectl delete namespace(ns) hello
- 使用配置文件的方式創(chuàng)建命名空間
kubectl apply -f hello.yaml
- 使用配置文件的方式刪除命名空間
kubectl delete -f hello.yaml
hello.yaml
apiVersion: v1
kind: Namespace
metadata:
name: hello
pod 操作相關(guān)
- 查看默認(rèn)命名空間和指定命名空間的pod
kubectl get pod(pods) | kubectl get pod -n xxx
- 查看所有命名空間的pod
kubectl get pods --all-namespaces
- 創(chuàng)建pod
kubectl apply -f xxx.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
spec:
containers:
- name: nginx-pod
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- name: nginxport
containerPort: 80
- 刪除pod
kubectl delete pods xxx -n yyy
- 查看指定pod 中的日志
kubectl logs -f pod名稱 -n xxx
- 在pod內(nèi)部執(zhí)行命令
kubectl exec -it xxx – /bin/bash
service 操作相關(guān)
在k8s 集群中,pod 是應(yīng)用程序的載體,我們可以通過pod 的ip來訪問應(yīng)用程序,但是pod的ip地址不是固定的,這就意味著不方便直接采用pod的ip來對服務(wù)進(jìn)行訪問,為了解決這個問題,k8s提供了service資源。service資源會提供對同一個服務(wù)的多個pod進(jìn)行聚合,并且提供統(tǒng)一的入口地址,通過訪問service的入口地址就能訪問到后面的pod 服務(wù)。
- 創(chuàng)建service
kubectl expose --name=nginxsvc deploy nginx --port=80
- 查看service
kubectl get service -n xxx
- 刪除service
kubectl delete service(svc) xxx - n yyy
- 修改service端口
kubectl edit svc/svc名稱
service三種不同種類的type
ClusterIP: 默認(rèn)分配一個集群內(nèi)部可以訪問的虛擬IP
NodePort: 在每個node上分配一個端口作為外部的訪問入口
LoadBalancer: 與NodePort類似,在每個節(jié)點上啟用一個端口來暴露服務(wù),除此之外,K8S會請求底層云平臺(aliyun, aws等)上負(fù)載均衡器,將每個Node([NodeIP]:[NodePort])作為后端添加進(jìn)去.創(chuàng)建LoadBalancer類型的Service會自動創(chuàng)建和綁定外部LoadBalancer到節(jié)點映射的NodePort上。
ExternalName:通過返回帶有該名稱的 CNAME 記錄,使用任意名稱(由 spec 中的externalName指定)公開 Service 。不使用代理。這種類型需要 kube-dns 的 v1.7 或更高版本。
deployment 操作相關(guān)
- 查看deployment列表
kubectl get deployment -n xxx
- deployment自動伸縮
kubectl scale --replicas=3 deployment nginx
- 查看歷史記錄
kubectl rollout history deployment 應(yīng)用部署名稱
- 默認(rèn)回滾到上一個版本
kubectl rollout undo deployment 應(yīng)用部署名稱文章來源:http://www.zghlxwxcb.cn/news/detail-733890.html
- 默認(rèn)回滾到第一個版本
kubectl rollout undo deployment 應(yīng)用部署名稱 --to-revision=1文章來源地址http://www.zghlxwxcb.cn/news/detail-733890.html
到了這里,關(guān)于k8s 資源管理方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!