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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 k8s常用命令匯總

k8s常用命令匯總

更新時間:2022-05-30 10:43:21 來源:動力節(jié)點 瀏覽3607次

kubectl相關(guān)

命令

1.基本命令

命令 作用
create 創(chuàng)建資源
edit 編輯資源
get 獲取資源
patch 更新(修改)資源
delete 刪除資源
explain 展示資源文檔

2.運行/調(diào)試命令

命令 作用
run 在集群中運行指定鏡像
expose 暴露資源為service
describe 展示資源內(nèi)部信息
logs 輸出容器在pod中的日志
attach 進入運行中的容器
cp 在pod內(nèi)外復(fù)制文件
rollout 管理資源的發(fā)布
scale 擴/縮容Pod數(shù)量
autoscale 自動調(diào)整pod數(shù)量

資源分類

1.集群級別資源

資源名稱 縮寫 說明 資源作用
nodes no node節(jié)點 集群組成部分
namespace ns 命名空間 隔離Pod

2.pod資源

 

資源名稱 縮寫 說明 資源作用
pods po pod 裝載容器的最小單元

3.pod資源控制器

資源名稱 縮寫 說明 資源作用
replicationcontroller rc   控制pod資源
replicasets rs   控制pod資源
daemonsets ds   控制pod資源
jobs     控制pod資源
cronjobs cj   控制pod資源
horizontalpodautoscalers hpa   控制pod資源
statefulsets sts   控制pod資源

4.服務(wù)發(fā)現(xiàn)資源

資源名稱 縮寫 說明 資源作用
services svc 服務(wù) 統(tǒng)一pod對外接口
ingress ing   統(tǒng)一pod對外接口

參數(shù)

參數(shù) 說明
-A 展示所有
-f 指定文件
-k 處理kustomization目錄。此標志不能與-f或-R一起使用。
-L 指定標簽lebel
-o 指定輸出格式,常用的有json、yaml、wide(詳細列表)
-R 遞歸處理-f,–filename中使用的目錄。在需要管理時非常有用
-l 要進行篩選的選擇器(只支持標簽查詢),支持“=”、“=”和“!=”。(例如-l鍵1=value1,鍵2=value2)
用法示例:kubectl get pod -l "key=value"
-w 持續(xù)跟蹤命令的狀態(tài)或者事件變化,類似tail -f功能
-n 指定命名空間,--namepace的縮寫
-i 即使未連接任何組件,也要保持pod中容器上的stdin打開。
-t 為pod中的每個容器分配了一個tty。

資源管理方式

命令行敲出的指令分為2種,

其中kubectl、run、create、apply 等等都是命令,

前面帶-或者--的都是參數(shù),比如--port、-image、-n

資源管理方式分類

類型 操作對象 適用環(huán)境 優(yōu)點 缺點 使用頻率
命令式對象管理 對象 測試 簡單 只操作活動對象,無法審計、跟蹤 較少
命令式對象配置 文件 開發(fā) 可以審計跟蹤 項目大時,配置文件多,操作麻煩 常用
聲明式對象配置 目錄 開發(fā) 支持目錄操作 意外情況下難以調(diào)試 較少

1.命令式對象管理

直接使用命令去操作k8s資源,命令和參數(shù)一起出現(xiàn)

kubectl run nginx-pod --image=nginx:1.17.1 --port=80

2.命令式對象配置

通過命令和配置文件去操作作k8s資源,命令還是那個命令,只不過參數(shù)都放在配置文件里面

kubectl create/patch -f nginx-pod.yaml

3.聲明式對象配置

kubectl apply -f nginx-pod.yaml

使用apply創(chuàng)建資源,

如果資源不存在,就創(chuàng)建,相當于執(zhí)行kubectl create -f nginx-pod.yaml

如果資源存在,就修改,相當于執(zhí)行kubectl patch -f nginx-pod.yaml

node

1.獲取所有節(jié)點

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   15h   v1.20.9
node1    Ready    <none>                 13h   v1.20.9
node2    Ready    <none>                 11h   v1.20.9

說明

NAME : 節(jié)點名稱

STATUS :節(jié)點狀態(tài)

Ready : 已就緒

NotReady:未就緒

ROLES :角色

AGE:運行時長,從啟動到現(xiàn)在運行了多長時間

VERSION : 版本

2.刪除節(jié)點

在master節(jié)點執(zhí)行以下命令即可刪除

# 先卸載節(jié)點,但是還未刪除
 kubectl drain node1 --delete-local-data --force --ignore-daemonsets
# 刪除節(jié)點
kubectl delete node node2

還需要在work節(jié)點上執(zhí)行以下命令來清空ini配置

kubeadm reset

3.加入節(jié)點

先在主節(jié)點創(chuàng)建令牌

# 執(zhí)行后會返回一個 kubeadm 開頭的命令
kubeadm token create --print-join-command

然后在需要加入集群的節(jié)點中執(zhí)行令牌,注意這里的命令是通過kubeadm token create --print-join-command命令返回的結(jié)果

# 在工作節(jié)點上執(zhí)行以下命令即可加入集群
kubeadm join cluster-endpoint:6443 --token xxx.xxx     --discovery-token-ca-cert-hash sha256:xxx

namespace

1.獲取所有namespace

# 第一種用法
[root@master ~]# kubectl get namespaces
NAME              STATUS   AGE
default           Active   16h   # 所有未指定namespace的對象都會被分配在default空間
kube-node-lease   Active   16h   # 集群節(jié)點之間的心跳維護,v1.13開始引入
kube-public       Active   16h   # 此命名空間可以被所有人訪問(包括未認證用戶)
kube-system       Active   16h   # k8s系統(tǒng)空間,所有由k8s創(chuàng)建的資源都分配到這個空間
# 第二種用法
kubectl get namespace
# 第三種用法
kubectl get ns

2.獲取某個命名空間

# 獲取名為default的namespace
kubectl get ns default

3.獲取namespace為default的的描述信息

[root@master ~]# kubectl describe ns default
Name:         default
Labels:       <none>
Annotations:  <none>
Status:       Active
No resource quota.   # 針對namespace做的資源限制
No LimitRange resource. # LimitRange 針對 namespace中每個組件做的資源限制

說明

Status

Active :正在使用,

Terminating :正在刪除namespace

4.創(chuàng)建namespace

記住,名稱中不能用下劃線_,可以用橫行-

第一種創(chuàng)建方式–命令行創(chuàng)建

kubectl create ns xxx

第二種創(chuàng)建方式–命令行 + 配置文件

創(chuàng)建一個名為namespace-dev.yaml的文件,內(nèi)容如下(注意大小寫,kind的頭字母必須大寫)

apiVersion: v1
kind: Namespace
metadata: 
  name: dev

然后偶執(zhí)行命令進行創(chuàng)建

kubectl create -f namespace-dev.yaml

5.刪除namespace

需要注意的是,刪除后,當前命名空間下的pod、deployment、container也會一起刪掉

第一種–使用命令刪除

kubectl delete ns xxx

第二種–使用配置文件刪除

kubectl delete -f namespace-dev.yaml

6.查看命名空間詳情

kubectl describe ns xxx

pod

1.獲取所有pod

[root@master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS                            RESTARTS   AGE
kube-system   calico-kube-controllers-7498f6cbdd-k6m4q   0/1     Running                           20         10h
kube-system   calico-node-5bj92                          0/1     Init:0/2                          1          10h
kube-system   calico-node-fqn48                          0/1     Init:0/2                          0          10h
kube-system   calico-node-r2ln8                          0/1     Init:0/2                          1          10h
kube-system   coredns-5897cd56c4-vnw4c                   0/1     ContainerCreating                 0          15h
kube-system   coredns-5897cd56c4-zvwdn                   0/1     ContainerCreating                 0          15h
第二種用法
kubectl get pods -A 
第三種用法
kubectl get po -A

說明

NAMESPACE :名稱空間

NAME:Pod名稱

READY:已準備好的實例數(shù)/總實例數(shù)

STATUS:狀態(tài)

Running:運行中

Init:0/2 : 正在初始化 已初始化完成數(shù)量/總數(shù)

ContainerCreating : 容器正在創(chuàng)建中,需要注意的是,如果長時間還是這個狀態(tài)的話,就是有錯誤了,需通過命令kubectl describe pod podName查看原因

RESTARTS : 重啟次數(shù)

AGE:運行時長

獲取所有namespace的pod并監(jiān)視資源變動

加上-w 表示監(jiān)視資源變動信息,此時命令行進入阻塞狀態(tài),如果pod有變化將會馬上呈現(xiàn)出來;

kubectl get pod -A -w

其他參數(shù)

# -n 表示獲取指定namespace的pod
kubectl get pod  -n kube-system
# 如果不加 -n 參數(shù),默認獲取的是default下的pod,所以以下2個命令的執(zhí)行結(jié)果是一樣的
kubectl get pod 
kubectl get pod -n default

2.創(chuàng)建pod

因為pod里面至少要有一個容器,所以pod是和容器一起創(chuàng)建的,新建一個文件pod.ymal,內(nèi)容如下

apiVersion: v1
kind: Pod
metadata: 
  name: pod-name
  namespace: dev
spec: 
  containers: 
    - image: nginx:1.17.1
      name: nginx-container
      ports: 
        - name: nginx-port
          containerPort: 80
          protocol: TCP

然后執(zhí)行命令并指定配置文件進行創(chuàng)建

kubectl create -f pod.ymal

3.修改pod

4.刪除pod

如果只是單純的刪除pod,你會發(fā)現(xiàn),刪除了之后,k8s會自動啟動了另一個pod,這是因為當前pod是由pod控制器創(chuàng)建的,控制器會監(jiān)控pod狀態(tài),一旦pod死亡,會立即重建,所以想要刪除pod就得先刪除deployment。刪除后,與此deployment關(guān)聯(lián)的pod也會一起刪除;

如果不刪除delployment的話,這里的刪除pod只是充當一個重啟的作用;

如果是創(chuàng)建時未指定pod控制器,那就可以使用以下命令直接刪除pod

# 刪除deployment,刪除后,與此deployment關(guān)聯(lián)的pod也會一起刪除
kubectl delete deployment xxx
# 刪除pod
kubectl delete pod xxx

label

1.為資源打標簽(第一種方式:使用命令打標簽)

# 為pod資源打標簽,需要注意的是,打標簽之前,pod必須提前創(chuàng)建好
kubectl label pod pod-name labelKey=labelValue -n deplot-name 
# 為node資源打標簽
kubectl label nodes node1 nodetag=node1

2.為資源打標簽(第二種方式:使用配置文件打標簽)

以下示例是為pod資源打標簽,這種方式是和pod一起創(chuàng)建的,新建一個配置文件 label.yaml

apiVersion: v1
kind: Pod
metadata: 
  name: pod-name
  namespace: dev
  labels: 
    lebelKey1: "labelValue1"
    lebelKey2: "labelValue2"
    lebelKey3: "labelValue3"
spec: 
  containers: 
    - image: nginx:1.17.1
      name: nginx-container
      ports: 
        - name: nginx-port
          containerPort: 80
          protocol: TCP

執(zhí)行命令創(chuàng)建pod

kubectl apply -f label.ymal

3.更新標簽

適合更新label值,前提是label的key必須已存在;

kubectl label pod pod-name labelKey=labelValue -n deplot-name  --overwrite

4.查看標簽

kubectl get pod pod-name  -n dev --show-labels

5.篩選標簽

# 查詢lebelKey1=labelValue1的pod
kubectl get pod  -n dev -l lebelKey1=labelValue1 --show-labels
# 查詢A不等于B的pod
kubectl get pod  -n dev -l A!=B --show-labels

6..刪除標簽

刪除key為lebelKey的標簽

# 刪除pod資源的表標簽
kubectl label pod ymal-create-pod-name lebelKey- -n dev
# 刪除node資源的標簽

pod控制器(deployment)

pod控制器有很多種,我們這里就用deployment

1.創(chuàng)建deployment(第一種方式:命令行創(chuàng)建)

使用以下run命令運行一個nginx,deployment名稱為app=run-cmd-nginx-deploy-3

kubectl create deployment app=run-cmd-nginx-deploy-3 --image=nginx:1.17.1 --port=80 --replicas=3 -n dev
# 說明
 nginx-deploy # pod控制器的名稱,也就是deployment,
 --image=nginx:1.17.1 # 指定鏡像版本
 --port=80 # 指定nginx的端口
 --replicas=3 # 創(chuàng)建三個副本,也就是會創(chuàng)建三個pod(注意:在k8s版本v1.8以后,r--eplicas已失效,建議使用deployment,不過僅僅是run命令失效,create 和yaml配置文件還是有效的)
 -n dev # 指定namespace

通過以下命令可以看到,會自動生成一個app=run-cmd-nginx-deploy-3的標簽

[root@master ~]# kubectl get deployment -o wide -n dev --show-labels
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES         SELECTOR                     LABELS
run-cmd-nginx-deploy-3   3/3     3            3           18m   nginx        nginx:1.17.1   app=run-cmd-nginx-deploy-3   app=run-cmd-nginx-deploy-3

2.創(chuàng)建deployment(第二種方式:yaml配置文件創(chuàng)建)

新建一個deployment.yaml文件,內(nèi)容如下

apiVersion: apps/v1  # 前面的apps/必須這樣寫,斜杠后面隨便寫,暫不知為何
kind: Deployment  # 創(chuàng)建deployment
metadata: 
  name: ymal-deployment-name  # deployment名稱
  namespace: dev  # 所屬命名空間
spec: 
  replicas: 3  # 副本數(shù)量
  selector: 
    matchLabels:  # 匹配標簽
      deploy-label-1: ymal-label    # 此選擇器和下面的template.metadata..labels進行關(guān)聯(lián),可以發(fā)現(xiàn)這倆值是一樣的,一樣的值就會進行關(guān)聯(lián)
  template:  # pod模板
    metadata:  # 以下是pod配置
      labels: 
        deploy-label-1: ymal-label
    spec: 
      containers:  # 以下是容器配置
      - image: nginx:1.17.1
        name: nginx-container
        ports: 
        - name: nginx-port
          containerPort: 80
          protocol: TCP

3.查詢deployment的詳細信息

# 查看deployment詳細信息
kubectl describe deployment xxx -n dev
# 查看所有的deplyment
kubectl get deployment -A
# 查詢某個deployment
kubectl get deployment xxx -n dev
# 模糊查詢 
kubectl get deployment -A | grep xxx
# 查詢deployment下的所有pod
kubectl get pod -A | grep deployment-name

4.刪除deployment

需要注意的是,一旦刪除pod控制器,此pod控制器下的所有pod和容器也會一并刪除;

# 第一種刪除方式,直接命令刪除
kubectl delete deployment xxx -n dev
# 第二種刪除方式,使用配置文件進行刪除
kubectl delete -f deployment.yaml

service

1.創(chuàng)建service–命令行方式創(chuàng)建

默認創(chuàng)建的pod是只能對內(nèi)訪問的,所以需要創(chuàng)建一個對外的訪問端口,創(chuàng)建一個service其實就是暴露對外的訪問端口

kubectl expose deployment xxx --name=service-name --port=80 --target-port=80 --type=NodePort

說明

expose deployment xxx : 需要暴露的deployment名稱

--name :service名稱

--port : service 暴露的端口

--target-port : 目標端口,也就是pod容器中的端口

--type:service類型,分為以下幾個

ClusterIP:默認值,它是Kubernetes系統(tǒng)自動分配的虛擬IP,只能在集群內(nèi)部訪問

NodePort:將Service通過指定的Node上的端口暴露給外部,通過此方法,就可以在集群外部訪問服務(wù)

LoadBalancer:使用外接負載均衡器完成到服務(wù)的負載分發(fā),注意此模式需要外部云環(huán)境支持

ExternalName: 把集群外部的服務(wù)引入集群內(nèi)部,直接使用

創(chuàng)建好service之后,查看service信息,可以看到,暴露的端口為:30474,

外部訪問:因為博主這邊是虛擬機,所以使用主機的ip:端口,也就是192.168.253.131:30474就可以訪問到頁面了;

內(nèi)部訪問:直接在虛擬機內(nèi)訪問10.96.216.128:80即可

[root@master ~]# kubectl get svc -n dev
NAME                TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
ymal-service-name   NodePort   10.96.216.128   <none>        80:30474/TCP   10m
# 說明
  CLUSTER-IP  # 此ip只能內(nèi)部訪問
  PORT(S)     # 我們看到上面有2個端口80:30474,80是內(nèi)部訪問端口,30474是外部訪問的端口;

2.創(chuàng)建service(ymal方式創(chuàng)建)

新建一個service.ymal文件,內(nèi)容如下

apiVersion: v1
kind: Service
metadata: 
  name: service-name
  namespace: dev
spec: 
  clusterIP: 10.96.98.123
  ports: 
  - port: 80
    protocol: TCP
    targetPort: 80
  selector: # 標簽選擇器,需要和deployment的label一致
    deploy-label-1: ymal-label
  type: NodePort

3.查看service

以下三種用法都可以

# 第一種
kubectl get services
# 第二種
kubectl get services
# 第三種
kubectl get svc

4.刪除service

kubectl delete service xxx

組合查詢

查詢pod控制器和pod

kubectl get deployment,pod -n dev

endpoint

Endpoint是kubernetes中的一個資源對象,存儲在etcd中,用來記錄一個service對應(yīng)的所有pod的訪問地址,它是根據(jù)service配置文件中selector描述產(chǎn)生的。

一個Service由一組Pod組成,這些Pod通過Endpoints暴露出來,Endpoints是實現(xiàn)實際服務(wù)的端點集合。換句話說,service和pod之間的聯(lián)系是通過endpoints實現(xiàn)的。

每創(chuàng)建一個service,k8s會自動創(chuàng)建一個同名的 Endpoint出來

1.查看 endpoint

# 一定要加s
kubectl get endpoints -n dev
# 查看endpoint的詳細信息
kubectl describe endpoints -n dev

2.刪除endpoint

如果是由service創(chuàng)建出來的endpoints,刪除后會馬上創(chuàng)建出一個同名的endpoint出來,如果要刪除必須先刪除service

kubectl delete endpoints xxxx -n dev

3.創(chuàng)建endpoint

因為每次創(chuàng)建一個service,k8s會自動創(chuàng)建一個同名的 Endpoint出來,所我們直接創(chuàng)建service就可以了

kind: Service
apiVersion: v1
metadata:
  name: nginx
  namespace: dev
spec:
  type: ClusterIP
  ports:
  - name: app-port
    protocol: TCP
    port: 80
    targetPort: 80
  selector:
    app: nginx-pod

 

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日韩精品欧美精品中文精品 | 奇米影视888狠狠狠777九色 | 国产精品一区二区久久精品 | 国产91久久最新观看地址 | 久久久久综合精品福利啪啪 | 久久er99| 亚洲大片在线观看 | 老子午夜伦不卡影院 | 欧美影院一区二区三区 | 久久国产乱子伦精品在 | 狠狠操夜夜爱 | 久久九九有精品国产23百花影院 | 久久99热精品免费观看 | 中文字幕一区二区视频 | 色综合色综合色综合色综合 | 日本久久网站 | 国产高清国产精品国产k | 日韩精品你懂的在线播放 | 国产精品日本一区二区不卡视频 | 欧美久久久久久久一区二区三区 | 欧美三级中文字幕 | 欧美成人免费午夜影视 | 狠狠干夜夜草 | 欧美在线成人免费国产 | 717影院理论午夜伦八戒 | 激情综合婷婷 | 老子影院午夜理伦手机不卡 | 国产精品视频福利 | 亚洲欧美另类专区 | 日本四虎影院 | 欧美色图偷窥自拍 | 99视频在线| 免费鲁丝片一级在线观看 | 中文字幕在线永久 | 自拍偷拍一区 | 99久久做夜夜爱天天做精品 | 香蕉国产人午夜视频在线观看 | 中文字字幕乱码视频 | 性欧美成人免费观看视 | 国产精品久久久久9999高清 | 香蕉欧美 |