k8s常用命令


一、kubectl 常用命令


logs   #查詢POD的logs日志信息

cp    #拷貝文件到POD或者從POD拷貝文件到本地

attach #實時監控相關POD數據,相當於tail -F  

exec  #在POD中運行相關命令。

 

1、logs

kubectl      logs      nginx-86546d6646-fdcd9

2、cp

從本地拷貝到POD的容器

kubectl     cp            index.html          nginx-86546d6646-h7m2l:/usr/share/nginx/html/

從POD的容器里拷出來

反過來寫就行了。

注:有些POD無法使用CP,可能是沒有安裝tar,須要進入容器,設置YUM源,安裝后,可以使用。

3、attach

kubectl    attach   nginx-86546d6646-fdcd9     #實時查看

4、exec

 kubectl exec -it nginx-86546d6646-fdcd9 bash       #進入POD里面
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
root@nginx-86546d6646-fdcd9:/#

 

kubectl exec -it nginx-86546d6646-fdcd9 cat /etc/hosts   #在POD中運行命令

 

5、get

get 命令能夠確認的信息類別: deployments (縮寫 deploy)     events (縮寫 ev)         namespaces (縮寫 ns)    nodes (縮寫 no)        pods (縮寫 po)   replicasets (縮寫 rs)        replicationcontrollers (縮寫 rc)              services (縮寫 svc) 

[root@k8s-master 2]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.10.0.1      <none>        443/TCP          29h
nginx        NodePort    10.10.199.80   <none>        3000:31001/TCP   55m
[root@k8s-master 2]# kubectl get  deployments
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
mysql   2/2     2            2           28h
nginx   2/2     2            2           56m
[root@k8s-master 2]# kubectl get  events
LAST SEEN   TYPE     REASON              OBJECT                                 MESSAGE
<unknown>   Normal   Scheduled           pod/nginx-86546d6646-fdcd9             Successfully assigned default/nginx-86546d6646-fdcd9 to k8s-none2
56m         Normal   Pulled              pod/nginx-86546d6646-fdcd9             Container image "nginx:latest" already present on machine
56m         Normal   Created             pod/nginx-86546d6646-fdcd9             Created container nginx
56m         Normal   Started             pod/nginx-86546d6646-fdcd9             Started container nginx
<unknown>   Normal   Scheduled           pod/nginx-86546d6646-h7m2l             Successfully assigned default/nginx-86546d6646-h7m2l to k8s-node1
56m         Normal   Pulled              pod/nginx-86546d6646-h7m2l             Container image "nginx:latest" already present on machine
56m         Normal   Created             pod/nginx-86546d6646-h7m2l             Created container nginx
56m         Normal   Started             pod/nginx-86546d6646-h7m2l             Started container nginx
56m         Normal   SuccessfulCreate    replicaset/nginx-86546d6646            Created pod: nginx-86546d6646-fdcd9
56m         Normal   SuccessfulCreate    replicaset/nginx-86546d6646            Created pod: nginx-86546d6646-h7m2l
57m         Normal   Killing             pod/nginx-deployment-684bd4f4c-rwlbk   Stopping container nginx
57m         Normal   Killing             pod/nginx-deployment-684bd4f4c-z5k8j   Stopping container nginx
56m         Normal   ScalingReplicaSet   deployment/nginx                       Scaled up replica set nginx-86546d6646 to 2
[root@k8s-master 2]# kubectl get  pods

加上-o wide 參數可以查看更詳細的信息,比如看到此 pod 在哪個 node 

[root@k8s-master 2]# kubectl get  pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE        NOMINATED NODE   READINESS GATES
mysql-77596d4dcb-c7jdv   1/1     Running   0          28h   10.122.36.72     k8s-node1   <none>           <none>
mysql-77596d4dcb-mp82l   1/1     Running   0          28h   10.122.117.139   k8s-none2   <none>           <none>
nginx-86546d6646-fdcd9   1/1     Running   0          78m   10.122.117.142   k8s-none2   <none>           <none>
nginx-86546d6646-h7m2l   1/1     Running   0          78m   10.122.36.75     k8s-node1   <none>           <none>

6、建立POD資源

使用 kubectl create 和 kubectl apply 創建資源對象

kubectl create -f nginx-svc.yaml

kubectl apply -f nginx-svc.yaml

apply可多次執行。

create 不可多次執行,需要先刪除資源,再進行建立。

 

7、describe [dɪˈskraɪb] 描述

語法: kubectl describe pod pod 名字

語法: kubectl describe node node 名字

語法: kubectl describe deployment deployment 名字

kubectl  describe pod nginx-86546d6646-h7m2l 

8、delete

kubectl delete -n default service nginx

kubectl delete -n default deployment nginx  

kubectl delete node k8s-none2

二、使用 kubectl 管理集群

kubectl 相關命令參數如下:

kubectl edit 編輯服務器側資源

kubectl replace 替換,使用 yaml 配置文件來替換正在運行中的配置參數

kubectl patch 部分更新資源相關信息

kubectl apply 使用文件戒者標准輸入更改配置信息

kubectl scale 重新設定 Deployment/ReplicaSet/RC/Job 的 size

kubectl autoscale Deployment/ReplicaSet/RC 的自勱擴展設定

kubectl cordon 設定 node 不可使用

kubectl uncordon 設定 node 可以使用

kubectl drain 設定 node 迚入維護模式

1、edit

[root@k8s-master 2]# kubectl edit service nginx
service/nginx edited

2、replace

先修寫好配置文件,再進行替換,不然會報錯

[root@k8s-master 2]# kubectl get service nginx -o yaml > nginx_replace.yaml
[root@k8s-master 2]# vim nginx
nginx-deployment.yaml nginx_replace.yaml nginx-svc.yaml
[root@k8s-master 2]# vim nginx_replace.yaml
[root@k8s-master 2]# kubectl replace -f nginx_replace.yaml
service/nginx replaced

3、kubectl path

更換POD的images鏡像

[root@k8s-master 2]# kubectl patch pod nginx-86546d6646-fdcd9 -p '{"spec":{"containers":[{"name":"nginx","image":"richarvey/nginx-php-fpm:latest"}]}}'
pod/nginx-86546d6646-fdcd9 patched

[root@k8s-master 2]# kubectl exec nginx-86546d6646-h7m2l -it bash

bash-4.3# php -v
PHP 7.1.12 (cli) (built: Dec 1 2017 19:26:10) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.12, Copyright (c) 1999-2017, by Zend Technologies

4、kubectl apply

修改端口

[root@k8s-master 2]# kubectl apply -f nginx-svc.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
service/nginx configured

[root@k8s-master 2]# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.10.0.1 <none> 443/TCP 30h
nginx NodePort 10.10.199.80 <none> 3000:31008/TCP 131m

5、kubectl scale

scale 命令用於橫向擴展,是 kubernetes 戒者 swarm 這類容器編輯平台的重要功能一

實現環境:之前已經設定 nginx 的 replica 副本為 2 改為4

[root@k8s-master 2]# kubectl scale --current-replicas=2 --replicas=4 deployment/nginx
deployment.apps/nginx scaled

[root@k8s-master 2]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
mysql 2/2 2 2 29h
nginx 4/4 4 4 136m

 

6、kubectl autoscale

autoscale 命令用於自勱擴展確認,scale 需要手勱執行,而 autoscale 則會根據負載迚行調解。而 這條命令則可以對 Deployment 迚行設定,通過最小值和最大值的指定迚行設定。

[root@k8s-master 2]# kubectl autoscale deployment nginx --min=2 --max=10

7、kubectl cordon 不 uncordon

kubectl cordon k8s-node1  #不在node1上建立POD

kubectl uncordon k8s-node1 #取消此操作

8、kubectl drain

kubectl drain 命令 [dreɪn] 排水

用於對某個 node 結點迚行維護。

drain 兩個作用: 1. 設定此 node 不可以使用(cordon)

2. evict 驅逐 pod 到他正常的 node 節點上

[root@k8s-master 2]# kubectl drain k8s-node1 --ignore-daemonsets

 注:--ignore-daemonsets --忽略守護迚程

deployment手動建立POD  nginx

[root@k8s-master .kube]# kubectl create deployment nginx --image=nginx:1.20.2  --port=80  --replicas=2 

replicas 設置副本數

1.1版本后不支持replicas這個參數,需要用上面那條命令

kubectl run nginx-deploy --image=nginx --port=80 --replicas=2 --dry-run=true

kubectl get pods -o wide  #查看詳細POD的信息

 

[root@k8s-master .kube]# kubectl get pods -n kube-system -o wide    查看POD  kube 的運行方式

kubectl create deployment nginx --image=nginx:1.20.2    --replicas=2   

建立service

kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP

顯示service相關信息

kubectl get svc

運行一個buysbox

kubectl run client1 --image=busybox -it --restart=Never

 

dns 查詢     yum install  bing-untils

dig -t A nginx @10.10.0.10

查看網絡情況

iptables -vnL -t nat

修改副本數

kubectl scale --replicas=2 deployment nginx

顯示POd的標簽

kubectl get pods --show-labels

查看deployment 具體信息

kubectl describe deployment nginx

顯示service 詳細信息

kubectl describe svc nginx

 

 

 查詢相關yml 寫法

kubectl explain pods.spec.volumes

 

kubectl delete -f pod-demo.yaml

 

  

apiVersion: v1
kind: Pod
metadata:
  name:  pod-demo
  namespace: default
  labels:
    app: myapp3
    tier: frontend
spec:
  containers:
  - name: myapp3
    images: nginx:latest
    ports:
     - name: http
       ports: 80
     - name: https
       ports: 443
  - name: busybox2
    images:  busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5"

  顯示標簽

kubectl get pods --show-labels

kubectl get pods -l app  #顯示有App標簽的值

kubectl get pods -l app --show-labels

修改標簽

kubectl get pods -l cannary --show-labels

kubectl label pods myqpp release=stable --overwrite

顯示 兩個條件的標簽

kubectl get pods -l release=cannary,app=myapp --show-labels  

kubectl get pods -l release!=cannary --show-labels

kubectl get pods -l 'release in (stable,cannary)' --show-labels    #包含

kubectl get pods -l 'release notin (stable,cannary)' --show-labels    #不包含

 

節點打標簽

kubectl get nodes --show-labels

kubectl  label nodes node01.kk.com disktype=sshd

好處在於可以在建立POD時選擇標簽的節點進行部署。

apiVersion: v1
kind: Pod
metadata:
  name:  pod-demo
  namespace: default
  labels:
    app: myapp3
    tier: frontend
spec:
  containers:
  - name: myapp3
    images: nginx:latest
    ports:
     - name: http
       ports: 80
     - name: https
       ports: 443
  - name: busybox2
    images:  busybox:latest
    command:
    - "/bin/sh"
    - "-c"
    - "echo $(date) >> /usr/share/nginx/html/index.html; sleep 5"
 nodeselector: disktype=sshd 

  nodename:直接運行在指定的的node上。

      annotaition:

            與label 不同在於,它不能用於選擇資源對象,公用於對象提供“元數據”

   

apiVersion: v1
kind: Pod
metadata:
  name:  pod-demo
  namespace: default
  labels:
    app: myapp3
    tier: frontend
  annotations:
    avee.com/create-by: "cluster admin"

  pod 的生命周期

         狀態:pending      掛起 

                    running 

                     failed

                     succeeded

                     unknown

           創建POD:

           PoD生命周期中重要的行為:

           初始化容 器

            容器探測:liveness       readliness

           重啟  restarpolicy:

                   Always,OnFailurre,Nver,default to Always.

                


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM