Kubernetes07(kubectl的常用命令)

Kubernetes07(kubectl的常用命令)

一、引子

千里之行,始于足下。了解了kuberbetes的相关概念之后,就像我们学习linux操作系统一样,也要开始从常用命令开始学习。其实kubernetes的常用命令和docker的常用命令很相似,无需慌张。

二.kubernetes的命令行管理工具kuberctl简介

kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。
运行kubectl命令的语法如下所示:

$ kubectl [command] [TYPE] [NAME] [flags]
  • comand:指定要对资源执行的操作,例如create、get、describe和delete
  • TYPE:指定资源类型,资源类型是大小写敏感的,开发者能够以单数、复数和缩略的形式。
  • NAME:指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源
  • flags:指定可选的参数。例如,可以使用-s或者–server参数指定Kubernetes API server的地址和端口。

三.kubernetes的常用命令

笔者将kubernetes的常用命令分为三类:kubernetes的基础命令(增删改查),kubernetes的格式化输出命令(查看节点信息等),kubernetes的集群管理命令(对node节点的管理)

(一).kubernetes的基础命令

(1).创建资源对象

kubectl create -f xxx.yaml(文件)
kubectl create -f <directory>(目录下所有文件)

(2).删除资源对象

kubectl delete -f <filename>
kubectl delete pods,services -l name=<label-name>
kubectl delete pods --all(生产环境慎用)

(3.)查看资源对象

kubectl get nodes
kubectl get pods -n <namespace> -o wide

(4).描述资源对象

kubectl describe nodes <node-name>
kubectl describe pods -n <namespace> kubectl describe <pod-name>
kubectl describe pods <rc-name>

(5).对容器进行调用的命令

kubectl exec <pod-name> date(默认使用第一个容器执行Pod的date命令)
kubectl exec <pod-name> -c <container-name> date(指定Pod中的某个容器执行date命令)
kubectl exec -it <pod-name> -c <container-name> /bin/bash (相当与docker exec -it <container-name> /bin/bash)

(6).查看容器日志

kubectl logs <pod-name>
kubectl logs -f <pod-name> -c <container-name> (相当于tail -f 命令)

(二).kubectl格式化输出

(1).显示pod的更多信息

kubectl get pods -n <namespace> -o wide

(2).以yaml格式显示pod的信息

kubectl get pods -n <namespace> -o yaml

(3).以自定义列名显示Pod信息

kubectl get pod <pod-name> -o =custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion

(4).基于文件的自定义列名输出

kubectl get pods <pod-name> -o=custom-columns-file=template.txt

(5).输出结果排序

kubectl get pods --sort-by=.metadata.name

(三).kubernetes对集群的管理命令

(1).创建添加节点

#node节点加入master:
kubeadm join 192.168.138.131:6443 --token zlk694.ev3odwj7rbyaggz6 --discovery-token-ca-cert-hash sha256:eefe51ccf1c54149f5ce89423c100b1e0de8f8081c7c2c0e07a7613ef2025146
#生成加入master的命令:
kubeadm token create --print-join-command

(2).查看节点

[root@k8s-master01 ~]# kubectl get node
NAME           STATUS   ROLES    AGE     VERSION
k8s-master01   Ready    master   3h58m   v1.15.1
k8s-node01     Ready    <none>   53m     v1.15.1
k8s-note02     Ready    <none>   53m     v1.15.1
[root@k8s-master01 ~]# kubectl get node -n default -o wide
NAME           STATUS   ROLES    AGE    VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
k8s-master01   Ready    master   5h5m   v1.15.1   10.10.40.11   <none>        CentOS Linux 7 (Core)   4.4.241-1.el7.elrepo.x86_64   docker://19.3.13
k8s-node01     Ready    <none>   121m   v1.15.1   10.10.40.12   <none>        CentOS Linux 7 (Core)   4.4.241-1.el7.elrepo.x86_64   docker://19.3.13
k8s-note02     Ready    <none>   121m   v1.15.1   10.10.40.13   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64         docker://19.3.13

(3).删除节点

kubectl drain swarm1 --delete-local-data --force --ignore-daemonsets
kubectl delete node swarm1

(4).对node/pod标签的增删改

#给node设置标签
添加:kubectl label node lustre-manager-1 node-role.kubernetes.io/minion-1=
删除:kubectl label node lustre-manager-1 node-role.kubernetes.io/minion-1-
修改: kubectl label node lustre-manager-1 node-role.kubernetes.io/minion-1= --overwrite
#给pod设置标签
把node改成pod即可

(5)查看集群状态查看

#查看集群健康状态
[root@k8s-master01 ~]# kubectl get cs
NAME                 STATUS      MESSAGE                                                                                     ERROR
controller-manager   Unhealthy   Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused   
scheduler            Unhealthy   Get http://127.0.0.1:10251/healthz: EOF                                                     
etcd-0               Healthy     {"health":"true"}   

 kubectl cluster-info     # 集群核心组件运行情况
 kubectl get namespaces    # 表空间名
 kubectl version           # 版本
 kubectl api-versions      # API
 kubectl get events       # 查看事件

(6).查看deployment

#查看所有deployment
[root@k8s-master01 ~]# kubectl get deployment --all-namespaces
NAMESPACE     NAME      READY   UP-TO-DATE   AVAILABLE   AGE
kube-system   coredns   2/2     2            2           5h11m
#查看单独的deployment
kubectl get deployment nginx-app

(7).查看rc和services

kubectl get rc,services

(8).更新资源

kubectl rolling-update python-v1 -f python-v2.json           # 滚动更新 pod frontend-v1
kubectl rolling-update python-v1 python-v2 --image=image:v2  # 更新资源名称并更新镜像
kubectl rolling-update python --image=image:v2                 # 更新 frontend pod 中的镜像
kubectl rolling-update python-v1 python-v2 --rollback        # 退出已存在的进行中的滚动更新

(9). 编辑资源

 kubectl edit svc/docker-registry                      # 编辑名为 docker-registry 的 service

(10).动态管理pod增减(三种方式)

kubectl scale --replicas=3 rs/foo                                 # 将foo副本集变成3个
kubectl scale --replicas=3 -f foo.yaml                            # 缩放“foo”中指定的资源。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql  # 将deployment/mysql从2个变成3个
kubectl scale --replicas=5 rc/foo rc/bar rc/baz                   # 变更多个控制器的数量

参考文档:http://docs.kubernetes.org.cn/683.html

说实话,很多docker能够调用的命令,kubectl也能够调用。这对于我们来理解kubectl的命令来说能够起到一个非常好的辅助作用。以上常用命令的整理送给大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值