Kubernetes集群----kubectl管理

Kubernetes集群----kubectl管理

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

一:kubectl语法格式

1、帮助信息
 kubectl --help

Kubernetes集群----kubectl管理_第1张图片

2、创建
kubectl run  命令
常用语法:
kubectl run NAME --image=image [--env="key=value"参数] [--port=port端口] [--replicas=replicas副本集] [--dry-run=bool状态] [--overrides=inline-json] [--command命令] -- [COMMAND] [args...] [options]`

例:
创建一个名字为nginx-deployment 的资源Pod,镜像是nginx,端口是80,有三个副本数量。

[root@master01 ~]# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3
[root@master01 ~]# kubectl get pods   ‘查看刚创建的Pod资源’

Kubernetes集群----kubectl管理_第2张图片

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxYvrerF-1589031354062)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1589017330507.png)]

3、查看default空间内的所有资源
[root@master01 ~]# kubectl get all   ‘可看到副本数、控制器数都是3个’

Kubernetes集群----kubectl管理_第3张图片

4、删除pod资源nginx-deployment
[root@master01 ~]# kubectl delete deploy/nginx-deployment

Kubernetes集群----kubectl管理_第4张图片

[root@master01 ~]# kubectl delete deploy/nginx
[root@master01 ~]# kubectl get pods     ‘全部被删除了’
No resources found.

二:项目周期

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

在master01上配置

1、创建nginx的Pod资源
[root@master01 ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3

[root@master01 ~]# kubectl get pods,deployment,replicaset
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-7697996758-fgs9m   1/1     Running   0          7m36s
pod/nginx-7697996758-jqhqx   1/1     Running   0          7m36s
pod/nginx-7697996758-tt59h   1/1     Running   0          7m36s

NAME                          DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.extensions/nginx   3         3         3            3           7m36s

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.extensions/nginx-7697996758   3         3         3       7m36s
2、发布nginx service负载均衡的功能
[root@master01 ~]# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort
[root@master01 ~]# kubectl get service
‘46971 : NodePort对外提供的端口’

Kubernetes集群----kubectl管理_第5张图片

[root@master01 ~]# kubectl get pods -o wide    ‘查看网络状态信息’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A9I2CwE7-1589031354067)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1589019194325.png)]

[root@master01 ~]# kubectl get endpoints

Kubernetes集群----kubectl管理_第6张图片

  • kubernetes里kube-proxy支持三种模式,在v1.8之前使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引入了ipvs模式。node节点可安装 ipvsadm工具,用于查看负载均衡的服务端口 。

在node01、node02节点上

3、安装ipvsadm ,并查看
[root@node01 ~]# yum install ipvsadm -y
[root@node01 ~]# ipvsadm -L -n

Kubernetes集群----kubectl管理_第7张图片

4、在master01节点查看pod资源日志
[root@master01 ~]# kubectl get pods
[root@master01 ~]# kubectl logs nginx-7697996758-fgs9m
[root@master01 ~]# kubectl logs nginx-7697996758-jqhqx
[root@master01 ~]# kubectl logs nginx-7697996758-tt59h

Kubernetes集群----kubectl管理_第8张图片

5、用浏览器访问pod资源,再查看对应日志信息

Kubernetes集群----kubectl管理_第9张图片

[root@master01 ~]# kubectl logs nginx-7697996758-fgs9m  ‘再次访问就可看到对应的日志信息了’

Kubernetes集群----kubectl管理_第10张图片

6、更新nginx版本

更新版本为1.14版本

​ 打开谷歌浏览器,点击右上角三个点—选择更多工具—点击开发者选项—>找到network—>刷新访问 —>找到headers头部信息,就可以看到nginx版本信息。

Kubernetes集群----kubectl管理_第11张图片

在master01节点

7、 通过set命令获取更新的修改模板
[root@master01 ~]# kubectl set --help

Kubernetes集群----kubectl管理_第12张图片

8、更改nginx为1.14版本
[root@master01 ~]# kubectl set image deployment/nginx nginx=nginx:1.14     ‘更新nginx为1.14版本’

[root@master01 ~]# kubectl get pods -w       ‘-w :开启动态监听状态’
‘ctrl+c结束进程’

Kubernetes集群----kubectl管理_第13张图片

9、回滚nginx

如业务更新完,大量用户访问出现error问题,那么就要业务回滚到原来的版本。

[root@master01 ~]# kubectl rollout history deployment/nginx     ‘查看历史版本,有两个版本状态’

Kubernetes集群----kubectl管理_第14张图片

[root@master01 ~]# kubectl rollout undo deployment/nginx     ‘执行回滚到上一次版本’
[root@master01 ~]# kubectl rollout status deployment/nginx     ‘检查回滚状态’
[root@master01 ~]# kubectl rollout history deployment/nginx     ‘再次查看版本状态’

Kubernetes集群----kubectl管理_第15张图片

在浏览器中刷新下 查看版本

Kubernetes集群----kubectl管理_第16张图片

10、删除业务
[root@master01 ~]# kubectl get deployment        ‘查看deployment资源名称’
NAME    DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx   3         3         3            3           3h19m

[root@master01 ~]# kubectl delete deployment/nginx     ‘删除nginx项目的deployment资源’
deployment.extensions "nginx" deleted
[root@master01 ~]# kubectl get deployment
No resources found.       ‘删除完成’


[root@master01 ~]# kubectl get svc      ‘查看service资源名称’
NAME            TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.0.0.1             443/TCP        22h
nginx-service   NodePort    10.0.0.100           80:46971/TCP   3h12m
[root@master01 ~]# kubectl delete svc/nginx-service      ‘删除nginx项目的service资源’
service "nginx-service" deleted

Kubernetes集群----kubectl管理_第17张图片

11、查看具体资源的详细信息
[root@master01 ~]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3
[root@master01 ~]# kubectl get pods
[root@master01 ~]# kubectl describe pod nginx-7697996758-l8xnw

Kubernetes集群----kubectl管理_第18张图片

12、查看deployment资源
[root@master01 ~]# kubectl describe deployment/nginx
13、进入pod
[root@master01 ~]# kubectl exec -it nginx-7697996758-p7c7h bash
root@nginx-7697996758-p7c7h:/#

Kubernetes集群----kubectl管理_第19张图片

你可能感兴趣的:(K8S)