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