kubectl命令

kubenetes部署服务的流程

以部署一个nginx服务来说明kubernetes系统各个组件调用关系:

1. 首先要明确,一旦kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中

2. 一个nginx服务的安装请求会首先被发送到master节点的apiServer组件

3. apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上

在此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知 apiServer

4. apiServer调用controller-manager去调度Node节点安装nginx服务

5. kubelet接收到指令后,会通知docker,然后由docker来启动一个nginx的pod

pod是kubernetes的最小操作单元,容器必须跑在pod中至此,

6. 一个nginx服务就运行了,如果需要访问nginx,就需要通过kube-proxy来对pod产生访问的代理这样,外界用户就可以访问集群中的nginx服务了

常用pod资源

kubectl命令_第1张图片

pod的6种状态

pending:(资源不足,或者节点存在pod不能容忍的污点)

terminating:(磁盘空间不足,查看根目录资源)

crashloopbackof:(pod反复拉起后退出,一般为系统配置的问题,内存资源不足,系统oom,cgroup oom)

oomkilled:(节点内存不足或启动是有内存限制)

evicted:(磁盘空间不足)

init:(初始化未完成,通常为找不到可以调度的资源)

 查看kubectl版本

kubectl version    #查看当前kubelet的版本

查看kubectl的帮助手册

kubectl help

查看当前kubectl的api的资源

kubectl api-resources

创建pod

kubectl apply -f pod.yaml

get 查询对应资源的pod

1.kubectl get all -o wide    查看所有pod的详细信息

-o wide:    可以查看详细的信息,例如将pod调度到了那个节点

2.kubectl get node    查看当前节点的状态
  kubectl get node  -o wide    查看调度节点具体的信息

3.kubectl get node --show-labels    查看节点上的标签

kubectl 缩容

kubectl scale rs pc-replicaset --replicas=2 -n dev

kubectl 删除pod

kubectl delete rs pc-replicaset -n dev

给pod打标签

kubectl label pod nginx-pod version=1.0 -n dev    添加pod标签

kubectl label pod nginx-pod version=1.0 -n dev -overwrite    #覆盖标签

kubectl label pod pod_name version- -n dev 删除pod标签

查看pod的详细信息

(describe 当一个pod异常的时候,可以查看对应信息,查看报错)

kubectl describe pod/node pod/node的名称

主要关注events的响应

kubectl删除异常的pod

kubectl -n dev get pods | grep "Evicted" | awk '{print $1}' | xargs kubectl delete pod -n dev

将pod的文件导出到主机上

kubectl cp -n 分区名 -c 容器名 pod名:文件绝对路径 文件目标位置
注意!!!
1.文件绝对路径前面不能加 /
2.文件目标位置不能为文件夹,必须为文件路径
 
例:将pod里 /data/test.sql 拷贝到主机当前路径下,并命名为test.sql
kubectl cp -n zeus -c mysql zeus-mysql-back-0:data/test.sql ./test.sql

将主机的文件传到pod中

kubectl cp 主机文件路径 -n 分区 -c 容器 pod名:容器内绝对路径
注意!!!
1.主机文件路径可以为相对路径,也可以为绝对路径。
2.pod内绝对路径前面不能有 /
 
例:将主机当前路径下的test.sql文件拷贝到pod的data目录下,并命名为testnew.sql
kubectl cp ./test.sql -n zeus -c mysql zeus-mysql-back-1:data/testnew.sql

查看pod的日志

kubectl logs -f pod_name -c 容器名称 -n namespace

进入某个pod

kubectl -exec -it pod pod_name /bin/bash    进入pod

你可能感兴趣的:(linux,运维,服务器,kubernetes,云原生,kubelet)