学习kubernetes集群管理之常用命令一篇就够了!!!

一、概述

Kubectl 是管理k8s集群的命令行工具,通过生成的 json 格式传递给 apiserver 进行创建、查看、管理的操作。

二、kubectl 语法

2.1、语法格式

可以使用–help来查询语法格式

[root@localhost bin ]# kubectl --help

在这里插入图片描述
kubectl 的语法格式:

kubectl [command] [TYPE] [NAME] [flags]

1、command

指定要在一个或多个资源进行的操作,例如create,apply,get,describe,delete。

2、TYPE

指定资源类型。资源类型不区分大小写,可以指定单数,复数或缩写形式。
在这里插入图片描述
3、NAME

注意点:
名称有大小写的区分。
如果省略名称,则显示所有资源的详细信息,如“kubectl get pods”。
在对多个资源执行操作时,我们可以按类型和名称指定每个资源,或指定一个或多个文件
要按类型和名称指定资源:

如果资源类型相同,则对资源进行分组

kubectl get pod example-pod1 example-pod2

分别指定多种资源类型

kubectl get pod/example-pod1 replicationcontroller/example-rc1

要使用一个或多个文件指定资源

-f file1 -f file2 -f file<#>
#注意使用YAML而不是JSON格式的文件,因为YAML往往更加用户友好,特别是对于配置文件。

kubectl get pod -f ./pod.yaml

2.2、commond命令详情了解

基础命令

命令描述
create通过文件名或标准输入创建资源
expose将一个资源公开为一个新的Kubernetes Service
run在集群中运行一个指定的镜像
set为 objects 设置一个指定的特征
get显示一个或多个资源
explain查看资源的文档
edit在服务器上编辑一个资源
delete通过文件名、标准输入、资源名称或标签选择器来删除资源

部署命令:

命令描述
rollout管理资源的发布
scale为Deployment,ReplicaSet,Replication Controller 或 Job设置一个新的副本数量
autoscale自动调整一个Deployment,ReplicaSet,Replication Controller 或 Job的副本数量

集群管理命令

命令描述
certificate修改证书资源
cluster-info显示集群信息
top显示资源(CPU/Memory/Storage)使用。需要Heapster运行
cordon标记节点不可调度
uncordon标记节点可调度
drain驱逐节点上的应用,准备下线维护
taint更新一个或多个node上的taint标记

调试命令

命令描述
describe显示指定资源或资源组的详细信息
logs在一个Pod中打印一个容器日志。如果Pod只有一个容器, 容器名称是可选的
attach附加到一个运行的容器
exec执行命令到容器
port-forward转发一个或多个本地端口到一个pod
proxy运行一个proxy到KubemetesAPIserver
cp拷贝文件或目录到容器中
auth检查授权

三、命令的使用

kubectl run NAME --image=image [--env="key=value"参数] [--port=port端口] [--replicas=replicas副本集] [--dry-run=bool状态] [--overrides=inline-json] [--command命令] -- [COMMAND] [args...] [options]`
[root@localhost ~]# kubectl get pods
NAME                           READY   STATUS              RESTARTS   AGE
nginx-dbddb74b8-lbkts          1/1     Running             0          30h
nginx-deploy-8c5fc574c-c9hhs   1/1     Running             0          25h
nginx-deploy-8c5fc574c-l958w   0/1     ContainerCreating   0          25h
nginx-deploy-8c5fc574c-r8s4x   0/1     ContainerCreating   0          25h
#ContainerCreating正在创建

[root@localhost ~]# kubectl get pods
NAME                           READY   STATUS    RESTARTS   AGE
nginx-dbddb74b8-lbkts          1/1     Running   0          30h
nginx-deploy-8c5fc574c-c9hhs   1/1     Running   0          25h
nginx-deploy-8c5fc574c-l958w   1/1     Running   0          25h
nginx-deploy-8c5fc574c-r8s4x   1/1     Running   0          25h

在这里插入图片描述

[root@master1 ~]# kubectl get pods -o wide   #查看3个副本所在的node节点

在这里插入图片描述

[root@master1 ~]# kubectl get all    #查看default空间内的所有资源

在这里插入图片描述

删除Pod资源nginx-deployment

[root@master1 ~]# kubectl delete deploy/nginx-deployment

在这里插入图片描述

3.1、项目的生命周期

创建->发布->更新->回滚->删除

[root@localhost ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
kubectl run --generator=deployment/apps.v1beta1 is DEPRECATED and will be removed in a future version. Use kubectl create instead.
deployment.apps/nginx created

[root@localhost ~]# kubectl get pods,deployment,replicaset
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-7697996758-dx2j2   1/1     Running   0          25h
pod/nginx-7697996758-gxbrz   1/1     Running   0          25h
pod/nginx-7697996758-mpzcr   1/1     Running   0          25h

NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/nginx   3         3         3            3           101s

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.extensions/nginx-7697996758   3         3         3       25h
#创建Pod资源的同时也创建了3个控制器和3个副本集

3.1.2、发布nginx service提供LVS负载均衡的功能

#常用语法:
kubectl expose (-f FILENAME | TYPE NAME) [--port=port群集之间内部通信的端口] [--protocol=TCP|UDP|SCTP] [--target-port对外暴露的端口=number-or-name] [--name=name指定名称] [--external-ip=external-ip-of-service] [--type=type指定类型] [options]

[root@master1 ~]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

在这里插入图片描述

这里的NodePort提供了一个负载均衡,也就是所有node节点的48656端口都可访问nginx-service。

//查看网络状态详细信息

[root@master1 ~]# kubectl get pods -o wide

在这里插入图片描述

#或者查看后端提供负载均衡的节点
[root@master1 ~]# kubectl get endpoints

在这里插入图片描述
kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引入了ipvs模式。所以所有的node节点都可安装ipvsadmin工具,用于查看负载均衡的服务端口
在这里插入图片描述

在node1和node2节点上查看都有LVS负载均衡功能,说明服务发布成功!通过任意node节点:端口47308都可以访问。在这里插入图片描述

接下来用浏览器访问Pod资源,然后在查看相对应的日志内容。
在这里插入图片描述

在这里插入图片描述
访问地址为docker0

3.1.3、更新nginx 为1.14版本

首先在谷歌浏览器中打开开发者选项—>F5刷新访问—>找到network-- ->点击name —>找到headers头部信息,就可以看到nginx版本信息。
在这里插入图片描述

在master1节点上

//通过set命令来获取更新的修改模板

[root@master1 ~]# kubectl set --help在这里插入图片描述
//更新nginx为1.14版本

[root@master1 ~]# kubectl set image deployment/nginx nginx=nginx:1.14

//处于动态监听状态
[root@master1 ~]# kubectl get pods -w  

在这里插入图片描述
更新过程中变化:

1、容器资源更新过程中不能重启

2、容器更新是先创建一个新的容器,再删除一个原有的容器,完成更新。

3、更新过程中保证副本数量是3个

这个时候再次刷新并查看浏览器的nginx版本
在这里插入图片描述

3.1.4、业务回滚上一个版本

如果业务更新完,大量用户访问出现error问题,那么就要业务回滚上一个版本。
在这里插入图片描述

#执行回滚到上一次版本
[root@master1 ~]# kubectl rollout undo deployment/nginx

#检查回滚状态
[root@master1 ~]# kubectl rollout status deployment/nginx

在这里插入图片描述

再次查看历史版本,在浏览器中刷新查看版本

在这里插入图片描述

3.1.5、删除业务

查看deployment资源的名称

[root@master1 ~]# kubectl get deployment
NAME    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx   3         3         3            3           164m

1、删除nginx项目的 deployment资源

[root@master1 ~]# kubectl delete deployment/nginx

在这里插入图片描述

2、删除nginx的 service资源

[root@master1 ~]# kubectl get svc

[root@master1 ~]# kubectl delete svc/

在这里插入图片描述

3.2、其他的命令

1、查看具体资源的详细信息

kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) Po

例:查看deployment资源的详细信息

kubectl describe deployment/nginx

2、进入相应pod中

kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]

在这里插入图片描述

3、查看生成的YAML格式文件

kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml

4、查看生成的JSON格式文件

kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json

5、生成YAML 、 JSON文件导出

kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o json(yaml) > test.json(yaml)

6、将现有资源进行导出

kubectl get svc/nginx-svc --export -o yaml > nginx-svc.yaml

7、测试命令正确性,不执行(类似shell脚本中的sh -n)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值