k8s常用命令

1、kubectl命令说明

1.1、查看pod的命令

###查询某个namespace下所有pod信息
kubectl get pod -n=base-service

命令结果如下所示:

ubuntu@vm-192-168-163-56:~$ kubectl get pod -n=base-service
NAME                                  READY   STATUS    RESTARTS   AGE
sport-boss-5b8b878b56-9fh2d           1/1     Running   0          45h
sport-web-6c855954cdwsd-lwzsj         1/1     Running   6          57d
spillow-web-558fd89-9bjfs             1/1     Running   0          45h
sport-task-66c688d7-fphhb             1/1     Running   0          45h
sport-module-5cd6756ff-zzt6r          1/1     Running   0          7d19h
sport-task-98ddfdb49-pcvp6            1/1     Running   0          5d19h
sport-library-d7f55fd9b-kdbsv         1/1     Running   0          13d
sport-manage-54784df8d7-5hr5s         1/1     Running   0          5d14h
cix-conne-54784dwddf8d7-srbkh         1/1     Running   0          5d14h
cix-manage-service-d75bc6bc5-v2slc    1/1     Running   0          46h
cix-service-6cccf9b69d-4pnds          1/1     Running   0          17h
cix-web-conne-5bes33f5c8bfc4-5pcpw    1/1     Running   0          45h
cix-web-conne-5bfew3e5c8bfc4-g4df8    1/1     Running   0          45h
eas-5ccfcd87f8-whgql                  1/1     Running   0          15d
eas-web-b84997b59-d4vsf               1/1     Running   0          57d
food-service-64684c9894-xlzpk         1/1     Running   7          57d
intergation-service-87b9f665f-ghss7   1/1     Running   0          21d
push-gateway-6885cbcdc6-vzcjp         1/1     Running   0          6d
###根据pod名称筛选
kubectl get pod -n firt-sport |grep sport

命令结果如下所示:

sport-boss-5b8b878b56-9fh2d         1/1     Running   0          45h
sport-web-6c855954cdwsd-lwzsj       1/1     Running   6          57d
sport-module-5cd6756ff-zzt6r        1/1     Running   0          7d19h
sport-task-98ddfdb49-pcvp6          1/1     Running   0          5d19h
sport-library-d7f55fd9b-kdbsv       1/1     Running   0          13d
sport-manage-54784df8d7-5hr5s       1/1     Running   0          5d14h

注:如果namespace是default时,命令中可以去掉-n firt-sport部分。

1.2、查看pod对应ip的命令

###查询某个namespace下所有的pod对应的ip及端口号
kubectl get svc -n firt-sport | grep sport

结果显示如下:

sport-boss    ClusterIP   172.18.91.157   <none>  8080/TCP         714d
sport-web     ClusterIP   172.18.252.55   <none>  8080/TCP         352d
sport-task    ClusterIP   172.18.170.76   <none>  8080/TCP         353d
sport-module  ClusterIP   172.18.27.14    <none>  8080/TCP         18d
sport-library ClusterIP   172.18.139.206  <none>  8080/TCP         493d
sport-manage  ClusterIP   172.18.166.3    <none>  80/TCP           319d

1.3、查看日志

###查询某个namespace下某个服务的日志, --tail=100标识打印100行,-f表示打印实时日志
kubectl logs -f -n firt-sport sport-web-67b68d8948-dsdrq

结果显示如下

com.ctrip.framework.apollo.internals.RemoteConfigLongPollService.doLongPollingRefresh(RemoteConfigLongPollService.java:197)
 com.ctrip.framework.apollo.internals.RemoteConfigLongPollService.access$100(RemoteConfigLongPollService.java:51)
 com.ctrip.framework.apollo.internals.RemoteConfigLongPollService$2.run(RemoteConfigLongPollService.java:123)
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
 java.util.concurrent.FutureTask.run(FutureTask.java:266)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 java.lang.Thread.run(Thread.java:745)
03-Jul-2019 19:24:42.050 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /usr/local/apache-tomcat-8.5.9/webapps/sport.war has finished in 45,146 ms
03-Jul-2019 19:24:42.077 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
03-Jul-2019 19:24:42.113 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
03-Jul-2019 19:24:42.120 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 45454 ms

1.4、重启pod

### namespace不是default时,需要添加上对应的namespace信息
kubectl delete pod sport-web-67b68d8948-dsdrq -n firt-sport

显示结果如图:

pod "sport-web-67b68d8948-dsdrq" deleted

1.5、进入pod内部

###有些接口是直接提供给内部服务调用的,这个时候如果确认某个接口是否可以正确调用,可以直接跳转到对应服务内部机器上,通过curl命令进行测试,进入服务内部命令如下:
kubectl exec -it -n firt-sport sport-web-67b68d8948-dsdrq bash
###退出,返回到跳板机
exit

命令结果如图

ubuntu@vm-192-168-163-56:~$ kubectl exec -it -n firt-sport sport-web-67b68d8948-wsktl bash
root@sport-web-67b68d8948-wsktl:/# exit
exit
ubuntu@vm-192-168-163-56:~$

1.6、查看节点及命名空间

###可以同时查询多类内容,用“,”隔开,也可以单独查询
kubectl get node,namespace
ubuntu@vm-192-168-163-56:~$ kubectl get node,namespace
NAME               STATUS   ROLES    AGE     VERSION
node/192.168.163.50   Ready    <none>   54d     v1.12.3
node/192.168.163.51   Ready    <none>   46d     v1.12.3
node/192.168.163.52   Ready    <none>   2y79d   v1.12.3
node/192.168.163.53    Ready    <none>   686d    v1.12.3
node/192.168.163.54    Ready    <none>   463d    v1.12.3
node/192.168.163.55    Ready    <none>   248d    v1.12.3
node/192.168.163.56    Ready    <none>   34d     v1.12.3

NAME                       STATUS   AGE
namespace/test               Active   267d
namespace/base-service     Active   266d
namespace/firt-sport   Active   266d
namespace/default          Active   2y149d
namespace/heal-bky     Active   27d
namespace/ingy         Active   266d
namespace/test-nginx    Active   420d
namespace/kube-public      Active   2y149d
namespace/kube-system      Active   2y149d
namespace/lelf           Active   273d

1.7、查看pod运行在哪个Node

###namespace不是default时,需要加上对应的namespace信息
kubectl get pod sport-web -n firt-sport

结果如下显示:

ubuntu@vm-192-168-163-56:~$ kubectl get pod -n firt-sport sport-web-67b68d8948-wsktl -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP             NODE          NOMINATED NODE
sport-web-67b68d8948-wsktl   1/1     Running   0          13m   172.20.65.46   192.168.163.51   <none>
ubuntu@vm-192-168-163-56:~$


2、linux安装命令

apt updata && apt-get intall xx
###xx替换成对应命令
eg:apt update && apt-get install curl

3、监控Mongodb

###进入Mongodb服务内部
kubectl exec -it -n firt-sport mongo-controller-d8b79686-2hf2x bash
###监控命令
mongostat

监控结果显示

root@mongo-controller-d8b79686-2hf2x:/# mongostat
insert query update delete getmore command dirty  used flushes vsize   res qrw arw net_in net_out conn                time
     1     8     *0     *0       0    24|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  4.46k   53.9k  163 Sep  4 10:59:34.917
    *0    *0     *0     *0       0    16|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  1.03k   50.8k  163 Sep  4 10:59:35.918
    *0    *0     *0     *0       0    14|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  1.48k   49.2k  163 Sep  4 10:59:36.922
    *0    *0     *0     *0       0    19|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  1.13k   50.5k  163 Sep  4 10:59:37.915
     1     1     *0     *0       0    14|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  3.21k   52.5k  163 Sep  4 10:59:38.914
    *0     3     *0     *0       0    20|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  5.32k   52.5k  163 Sep  4 10:59:39.914
    *0     3     *0     *0       0     9|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  2.08k   89.1k  163 Sep  4 10:59:40.915
    *0    *0     *0     *0       0    10|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0   617b   44.5k  163 Sep  4 10:59:42.004
    *0    *0     *0     *0       0    12|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0   732b   53.3k  163 Sep  4 10:59:42.914
     2     4     *0     *0       0    16|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  3.95k   95.0k  163 Sep  4 10:59:43.914
insert query update delete getmore command dirty  used flushes vsize   res qrw arw net_in net_out conn                time
    *0     3     *0     *0       0    18|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  2.83k   60.0k  163 Sep  4 10:59:44.914
    *0     3     *0     *0       0    15|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  1.87k   47.5k  163 Sep  4 10:59:46.004
     1    *0     *0     *0       0    21|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  2.27k   55.4k  163 Sep  4 10:59:46.914
     1    *0     *0     *0       0    20|0  0.0% 19.7%       0 5.56G 4.54G 0|0 0|0  2.67k   50.4k  163 Sep  4 10:59:47.914

字段解释说明:

insert/s : 官方解释是每秒插入数据库的对象数量,如果是slave,则数值前有*,则表示复制集操作
query/s : 每秒的查询操作次数
update/s : 每秒的更新操作次数
delete/s : 每秒的删除操作次数
getmore/s: 每秒查询cursor(游标)时的getmore操作数
command: 每秒执行的命令数,在主从系统中会显示两个值(例如 3|0),分表代表 本地|复制 命令
注: 一秒内执行的命令数比如批量插入,只认为是一条命令(所以意义应该不大)
dirty: 仅仅针对WiredTiger引擎,官网解释是脏数据字节的缓存百分比
used:仅仅针对WiredTiger引擎,官网解释是正在使用中的缓存百分比
flushes:
For WiredTiger引擎:指checkpoint的触发次数在一个轮询间隔期间
For MMAPv1 引擎:每秒执行fsync将数据写入硬盘的次数
注:一般都是0,间断性会是1, 通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。flush开销是很大的,如果频繁的flush,可能就要找找原因了
vsize:虚拟内存使用量,单位MB (这是 在mongostat 最后一次调用的总数据)
res:物理内存使用量,单位MB (这是 在mongostat 最后一次调用的总数据)
注:这个和你用top看到的一样, vsize一般不会有大的变动, res会慢慢的上升,如果res经常突然下降,去查查是否有别的程序狂吃内存。

qr:客户端等待从MongoDB实例读数据的队列长度
qw:客户端等待从MongoDB实例写入数据的队列长度
ar:执行读操作的活跃客户端数量
aw:执行写操作的活客户端数量
注:如果这两个数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。看看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了
netIn:MongoDB实例的网络进流量
netOut:MongoDB实例的网络出流量
注:此两项字段表名网络带宽压力,一般情况下,不会成为瓶颈
conn: 打开连接的总数,是qr,qw,ar,aw的总和
注:MongoDB为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数,maxIncomingConnections,阿里工程师建议在5000以下,基本满足多数场景
posted @ 2019-09-04 11:06  janehost  阅读(1224)  评论(0编辑  收藏  举报