淺談k8s && Docker
1.1????? Kubernetes是什么
Kubernetes是容器集群管理系統,是一個開源的平臺,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
通過Kubernetes你可以:
·???????? 快速部署應用
·???????? 快速擴展應用
·???????? 無縫對接新的應用功能
·???????? 節省資源,優化硬件資源的使用
我們的目標是促進完善組件和工具的生態系統,以減輕應用程序在公有云或私有云中運行的負擔。
1.2????? Kubernetes kubectl run 命令詳解
1.2.1?? kubectl run
·???????? 創建并運行一個或多個容器鏡像。
·???????? 創建一個deployment?或job?來管理容器。
$ run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
1.2.2??????? kubectl expose
將資源暴露為新的Kubernetes Service。
指定deployment、service、replica set、replication controller或pod ,并使用該資源的選擇器作為指定端口上新服務的選擇器。deployment 或 replica set只有當其選擇器可轉換為service支持的選擇器時,即當選擇器僅包含matchLabels組件時才會作為暴露新的Service。
資源包括(不區分大小寫):
pod(po),service(svc),replication controller(rc),deployment(deploy),replica set(rs)
$ expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
1.2.3??????? kubectl annotate
更新一個或多個資源的Annotations信息。
Annotations由key/value組成。
Annotations的目的是存儲輔助數據,特別是通過工具和系統擴展操作的數據,更多介紹在這里。如果--overwrite為true,現有的annotations可以被覆蓋,否則試圖覆蓋annotations將會報錯。如果設置了--resource-version,則更新將使用此resource version,否則將使用原有的resource version。
$ annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
1.2.4??????? kubectl autoscale
使用 autoscaler 自動設置在kubernetes集群中運行的pod數量(水平自動伸縮)。
指定Deployment、ReplicaSet或ReplicationController,并創建已經定義好資源的自動伸縮器。使用自動伸縮器可以根據需要自動增加或減少系統中部署的pod數量。
$ autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
1.2.5??????? kubectl convert
轉換配置文件為不同的API版本,支持YAML和JSON格式。
該命令將配置文件名,目錄或URL作為輸入,并將其轉換為指定的版本格式,如果目標版本未指定或不支持,則轉換為最新版本。
默認輸出將以YAML格式打印出來,可以使用- o選項改變輸出格式。
$ convert -f FILENAME
1.2.6??????? kubectl create
通過配置文件名或stdin創建一個集群資源對象。
支持JSON和YAML格式的文件。
$ create -f FILENAME
1.2.7??????? kubectl delete
通過配置文件名、stdin、資源名稱或label選擇器來刪除資源。
支持JSON和YAML格式文件??梢灾恢付ㄒ环N類型的參數:文件名、資源名稱或label選擇器。
有些資源,如pod,支持優雅的(graceful)刪除,因為這些資源一般是集群中的實體,所以刪除不可能會立即生效,這些資源在強制終止之前默認定義了一個周期(寬限期),但是你可以使用--grace-period flag來覆蓋該值,或者通過pass --now設置該周期為1。
如果托管Pod的Node節點已經停止或者無法連接API Server,使用delete命令刪除Pod需等待時間更長。要強制刪除資源,需指定- force flag,且設置周期(寬限期)為0。
如果執行強制刪除Pod,則調度程序會在節點釋放這些Pod之前將新的Pod放在這些節點上,并使之前Pod立即被逐出。
注意:執行delete命令時不會檢查資源版本,如果在執行delete操作時有人進行了更新操作,那么更新操作將連同資源一起被刪除。
$ delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])
1.2.8??????? kubectl edit
使用默認編輯器 編輯服務器上定義的資源。
使用命令行工具獲取的任何資源都可以使用edit命令編輯。edit命令會打開使用KUBE_EDITOR,GIT_EDITOR 或者EDITOR環境變量定義的編輯器,可以同時編輯多個資源,但所編輯過的資源只會一次性提交。edit除命令參數外還接受文件名形式。
文件默認輸出格式為YAML。要以JSON格式編輯,請指定“-o json”選項。
如果在更新資源時報錯,將會在磁盤上創建一個臨時文件來記錄。在更新資源時最常見的錯誤是幾個用戶同時使用編輯器更改服務器上資源,發生這種情況,你需要將你的更改應用到最新版本的資源上,或者更新保存的臨時副本。
edit (RESOURCE/NAME | -f FILENAME)
1.2.9??????? kubectl get
獲取列出一個或多個資源的信息。
$ get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE [NAME | -l label] | TYPE/NAME ...) [flags]
1.2.10??? kubectl label
更新(增加、修改或刪除)資源上的 label(標簽)。
label 必須以字母或數字開頭,可以使用字母、數字、連字符、點和下劃線,最長63個字符。
如果--overwrite 為 true,則可以覆蓋已有的 label,否則嘗試覆蓋 label 將會報錯。
如果指定了--resource-version,則更新將使用此資源版本,否則將使用現有的資源版本。
$ label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
1.2.11??? kubectl patch
使用(patch)補丁修改、更新資源的字段。
支持JSON和YAML格式。
$ patch (-f FILENAME | TYPE NAME) -p PATCH
1.2.12??? kubectl replace
使用配置文件或stdin來替換資源。
支持JSON和YAML格式。如果替換當前資源,則必須提供完整的資源規范??梢酝ㄟ^以下命令獲?。?/p>
$ kubectl get TYPE NAME -o yaml
1.2.13??? kubectl rolling-update
執行指定ReplicationController的滾動更新。
該命令創建了一個新的RC, 然后一次更新一個pod方式逐步使用新的PodTemplate,最終實現Pod滾動更新,new-controller.json需要與之前RC在相同的namespace下。
$ rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)
1.2.14??? kubectl rollout
對資源進行管理
$ rollout SUBCOMMAND
1.2.15??? kubectl scale
擴容或縮容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod數量。
scale也可以指定多個前提條件,如:當前副本數量或 --resource-version ,進行伸縮比例設置前,系統會先驗證前提條件是否成立。
$ scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
1.2.16??? kubectl set
配置應用資源。使用這些命令能幫你更改現有應用資源一些信息。
$ set SUBCOMMAND
1.3????? Docker命令
1.3.1??????? Docker run 命令
docker run :創建一個新的容器并運行一個命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
1.3.2??????? docker start/stop/restart 命令
docker start :啟動一個或多個已經被停止的容器
docker stop :停止一個運行中的容器
docker restart :重啟容器
語法
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
1.3.3??????? Docker kill 命令
docker kill :殺掉一個運行中的容器。
語法
docker kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS說明:
-s :向容器發送一個信號
1.3.4??????? docker rm :刪除一個或多個容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS說明:
-f :通過 SIGKILL 信號強制刪除一個運行中的容器。
-l :移除容器間的網絡連接,而非容器本身。
-v :刪除與容器關聯的卷。
1.3.5??????? Docker pause/unpause 命令
docker pause :暫停容器中所有的進程。
docker unpause :恢復容器中所有的進程。
語法
docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
1.3.6??????? docker create :創建一個新的容器但不啟動它
用法同 docker run
語法
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
1.3.7??????? docker ps : 列出容器
語法
docker ps [OPTIONS]
OPTIONS說明:
-a :顯示所有的容器,包括未運行的。
-f :根據條件過濾顯示的內容。
--format :指定返回值的模板文件。
-l :顯示最近創建的容器。
-n :列出最近創建的n個容器。
--no-trunc :不截斷輸出。
-q :靜默模式,只顯示容器編號。
-s :顯示總的文件大小。
1.3.8??????? docker inspect : 獲取容器/鏡像的元數據。
語法
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
OPTIONS說明:
-f :指定返回值的模板文件。
-s :顯示總的文件大小。
--type :為指定類型返回JSON。
1.3.9??????? docker top :查看容器中運行的進程信息,支持 ps 命令參數。
語法
docker top [OPTIONS] CONTAINER [ps OPTIONS]
1.3.10??? docker logs : 獲取容器的日志
語法
docker logs [OPTIONS] CONTAINER
OPTIONS說明:
-f : 跟蹤日志輸出
--since :顯示某個開始時間的所有日志
-t : 顯示時間戳
--tail :僅列出最新N條容器日志
1.3.11??? docker export :將文件系統作為一個tar歸檔文件導出到STDOUT。
語法
docker export [OPTIONS] CONTAINER
OPTIONS說明:
-o :將輸入內容寫到文件。
1.3.12??? docker cp :用于容器與主機之間的數據拷貝。
語法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
OPTIONS說明:
-L :保持源目標中的鏈接
1.3.13??? docker diff : 檢查容器里文件結構的更改。
語法
docker diff [OPTIONS] CONTAINER
1.3.14??? Docker login/logout 命令
docker login : 登陸到一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
docker logout : 登出一個Docker鏡像倉庫,如果未指定鏡像倉庫地址,默認為官方倉庫 Docker Hub
語法
docker login [OPTIONS] [SERVER]
docker logout [OPTIONS] [SERVER]
OPTIONS說明:
-u :登陸的用戶名
-p :登陸的密碼
1.3.15??? docker pull : 從鏡像倉庫中拉取或者更新指定鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
OPTIONS說明:
-a :拉取所有 tagged 鏡像
--disable-content-trust :忽略鏡像的校驗,默認開啟
1.3.16??? docker push : 將本地的鏡像上傳到鏡像倉庫,要先登陸到鏡像倉庫
語法
docker push [OPTIONS] NAME[:TAG]
OPTIONS說明:
--disable-content-trust :忽略鏡像的校驗,默認開啟
1.3.17??? docker search : 從Docker Hub查找鏡像
語法
docker search [OPTIONS] TERM
--automated :只列出 automated build類型的鏡像;
--no-trunc :顯示完整的鏡像描述;
-s :列出數不小于指定值的鏡像。
1.3.18??? docker images : 列出本地鏡像。
語法
docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS說明:
-a :列出本地所有的鏡像(含中間映像層,默認情況下,過濾掉中間映像層);
--digests :顯示鏡像的摘要信息;
-f :顯示滿足條件的鏡像;
--format :指定返回值的模板文件;
--no-trunc :顯示完整的鏡像信息;
-q :只顯示鏡像ID。
1.3.19??? docker rmi : 刪除本地一個或多少鏡像。
語法
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS說明:
-f :強制刪除;
--no-prune :不移除該鏡像的過程鏡像,默認移除;
1.3.20??? docker build 命令用于使用 Dockerfile 創建鏡像。
docker build [OPTIONS] PATH | URL | -
OPTIONS說明:
--build-arg=[] :設置鏡像創建時的變量;
--cpu-shares :設置 cpu 使用權重;
--cpu-period :限制 CPU CFS周期;
--cpu-quota :限制 CPU CFS配額;
--cpuset-cpus :指定使用的CPU id;
--cpuset-mems :指定使用的內存 id;
--disable-content-trust :忽略校驗,默認開啟;
-f :指定要使用的Dockerfile路徑;
--force-rm :設置鏡像過程中刪除中間容器;
--isolation :使用容器隔離技術;
--label=[] :設置鏡像使用的元數據;
-m :設置內存最大值;
--memory-swap :設置Swap的最大值為內存+swap,"-1"表示不限swap;
--no-cache :創建鏡像的過程不使用緩存;
--pull :嘗試去更新鏡像的新版本;
--quiet, -q :安靜模式,成功后只輸出鏡像 ID;
--rm :設置鏡像成功后刪除中間容器;
--shm-size :設置/dev/shm的大小,默認值是64M;
--ulimit :Ulimit配置。
--tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;可以在一次構建中為一個鏡像設置多個標簽。
--network: 默認 default。在構建期間設置RUN指令的網絡模式
1.3.21??? docker save : 將指定鏡像保存成 tar 歸檔文件。
語法
docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 說明:
-o :輸出到的文件。
1.3.22??? docker load : 導入使用 docker save 命令導出的鏡像。
語法
docker load [OPTIONS]
OPTIONS 說明:
--input , -i : 指定導入的文件,代替 STDIN
--quiet , -q : 精簡輸出信息。
1.3.23??? docker import : 從歸檔文件中創建鏡像。
語法
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
OPTIONS說明:
-c :應用docker 指令創建鏡像;
-m :提交時的說明文字;
附件: Docker&&Kubernetes常用指令.docx 54.17KB 下載次數:0次
Kubernetes Docker 鏡像服務
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。