k8s--------------kubectl管理


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

一、基本命令

kubectl --help
命令描述
create创建资源
expose把资源提供出去被外部直接访问
run在集群中运行一个指定的镜像
set为 objects 设置一个指定的特征
explain查看资源的文档
get显示一个或更多资源
edit在服务器上编辑一个资源
delete删除
rollout回滚(更新了一个资源,出现了问题或不兼容,所以需要还原回原本的状态,执行回滚)
scale设置一个新的副本数量
autoscale自动调整副本数量
certificate修改 certificate 资源(证书授权时使用)
cluster-info显示集群信息
top显示资源的基本信息
cordon标记 node 为污点
uncordon标记 node 为 取消污点
drain删除node节点
taint更新一个或者多个 node 上的污点
describe显示一个指定资源的详情
logs输出容器在 pod 中的日志
attach附加到一个运行中的容器
exec在一个 容器中执行一个命令
port-forward为pod转发一个或多个
proxy运行一个代理到kubernetes API server
cp复制文件或目录到容器里或者从容器中复制文件和目录
auth检查授权

1、创建——kubectl run命令

格式:kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas]
[–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…] [options]

NAME:资源名称
--image=:指向镜像
--env=:指定参数,变量
--port=:指定端口
--replicas:指定副本集数量
--dry-run=:试运行
--overrides=:是否在线
--command:参数指令

例如:
多副本有效的创建

创建资源名称nginx-deployment,镜像nginx,端口80,副本集3
[root@localhost bin]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3

2、get查看

[root@localhost bin]# kubectl get pods					#查看pods资源
NAME                    READY   STATUS    RESTARTS   AGE
nginx-dbddb74b8-8qrm4   1/1     Running   2          25h

[root@localhost bin]# kubectl get pods -w	 			#可以自动去监控创建的状态

[root@localhost bin]# kubectl get all					查看全部资源信息,包括service的资源信息(提供对外资源),deployment控制器的资源,replicaset副本集资源
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-dbddb74b8-8qrm4   1/1     Running   2          25h

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   2d3h

NAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   1         1         1            1           25h

NAME                              DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-dbddb74b8   1         1         1       25h

在这里插入图片描述

3、删除

[root@localhost bin]# kubectl delete deploy/nginx				#删除单个的pod
deployment.extensions "nginx" deleted

[root@localhost bin]# kubectl delete deploy/nginx-deployment	#删除多个pods资源

[root@localhost bin]# kubectl get pods
No resources found.

二、项目周期的演示(nginx)

1、创建nginx

# 创建nginx资源,名字nginx,镜像nginx最新镜像,端口803个副本集
[root@localhost bin]# 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

# 查看pods资源,deployment控制器资源,replicaset副本集资源
[root@localhost bin]# kubectl get pods,deployment
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-7697996758-4clcs   1/1     Running   0          77s
pod/nginx-7697996758-724cq   1/1     Running   0          77s
pod/nginx-7697996758-v8wxt   1/1     Running   0          77s

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

在这里插入图片描述

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

格式: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]

expose:发布
-f:指定文件
--port:对外提供的端口
-target-port:目标端口
-name:资源名称

1)发布

[root@localhost bin]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
service/nginx-service exposed

2)查看资源对象简写

[root@localhost bin]# kubectl api-resources

3)查看关联后端的节点

[root@localhost bin]# kubectl get endpoints
NAME            ENDPOINTS                                      AGE
kubernetes      192.168.241.20:6443,192.168.241.5:6443         2d3h
nginx-service   172.17.28.2:80,172.17.28.4:80,172.17.88.4:80   56s

在这里插入图片描述

4)网络状态详细信息

[root@localhost bin]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP            NODE            NOMINATED NODE
nginx-7697996758-4clcs   1/1     Running   0          6m23s   172.17.28.2   192.168.241.3   <none>
nginx-7697996758-724cq   1/1     Running   0          6m23s   172.17.28.4   192.168.241.3   <none>
nginx-7697996758-v8wxt   1/1     Running   0          6m23s   172.17.88.4   192.168.241.4   <none>

在这里插入图片描述

5)服务暴露的端口

[root@localhost bin]# kubectl get svc
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        2d3h
nginx-service   NodePort    10.0.0.36    <none>        80:30326/TCP   2m43s

在这里插入图片描述

3、验证负载均衡

在node01操作,查看负载均衡端口38804
kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引入了ipvs模式

[root@localhost ~]# yum install ipvsadm -y
[root@localhost ~]# ipvsadm -L -n

在这里插入图片描述

在node02操作 同样安装ipvsadmin工具查看

[root@localhost ~]# ipvsadm -L -n

在这里插入图片描述

4、在master01操作 查看访问日志

注意:如果访问其他node无法访问检查proxy组件

[root@localhost bin]# kubectl get pods

[root@localhost bin]# kubectl logs nginx-7697996758-4clcs

在这里插入图片描述

5、更新nginx 为1.14版本

谷歌浏览器重新加载刷新页面查看nginx版本信息

1)查看当前版本号
进入网页——开发者工具——Network——找到访问的记录——Header——找到Server看到当前版本
在这里插入图片描述

2)变更版本

获取帮助信息
[root@localhost bin]# kubectl set --help

3)获取修改模板

[root@localhost bin]# kubectl set image deployment/nginx nginx=nginx:1.14
deployment.extensions/nginx image updated

因为更新了版本后,之前的容器全需要滚动发布,此时这里需要再次获取更新版本后的容器

[root@localhost ~]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP            NODE            NOMINATED NODE
nginx-6ff7c89c7c-75858   1/1     Running   0          2m21s   172.17.88.5   192.168.241.4   <none>
nginx-6ff7c89c7c-ksfsc   1/1     Running   0          95s     172.17.88.4   192.168.241.4   <none>
nginx-6ff7c89c7c-mh4xl   1/1     Running   0          117s    172.17.28.4   192.168.241.3   <none>

在这里插入图片描述

4)处于动态监听状态

[root@localhost bin]# kubectl get pods -w

[root@localhost bin]# kubectl get pods

6、回滚nginx

获取帮助信息
[root@localhost bin]# kubectl rollout --help

1)执行回滚

[root@localhost ~]# kubectl get all
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6ff7c89c7c-75858   1/1     Running   0          7m59s
pod/nginx-6ff7c89c7c-ksfsc   1/1     Running   0          7m13s
pod/nginx-6ff7c89c7c-mh4xl   1/1     Running   0          7m35s

NAME                    TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
service/kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        2d4h
service/nginx-service   NodePort    10.0.0.36    <none>        80:30326/TCP   27m

NAME                    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   3         3         3            3           31m

NAME                               DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-6ff7c89c7c   3         3         3       7m59s
replicaset.apps/nginx-7697996758   0         0         0       31m

[root@localhost bin]# kubectl rollout undo deployment.apps/nginx			#会回滚到上一个状态
deployment.apps/nginx

2)检查回滚状态

[root@localhost ~]# kubectl rollout status deployment.apps/nginx
deployment "nginx" successfully rolled out

3)删除nginx

[root@localhost bin]# kubectl delete deployment.apps/nginx

[root@localhost bin]# kubectl get deploy
No resources found.

[root@localhost bin]# kubectl get pods
No resources found.

在这里插入图片描述

4)删除服务SVC

[root@localhost bin]# kubectl get svc
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1     <none>        443/TCP        2d4h
nginx-service   NodePort    10.0.0.36    <none>        80:30326/TCP   35m

[root@localhost bin]# kubectl delete svc/nginx-service
service "nginx-service" deleted

[root@localhost bin]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.0.0.1     <none>        443/TCP   2d4h

5)查看具体资源的详细信息

[root@localhost bin]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3

在这里插入图片描述

6)查看deployment资源

[root@localhost bin]# kubectl describe deployment.apps/nginx

在这里插入图片描述

7)进入pod

[root@localhost ~]# kubectl exec -it nginx-7697996758-shml7 bash

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值