https://www.it610.com/article/1279909817661538304.htm

kubectl 命令管理pod资源

Kubectl是管理k8s集群的命令行工具,可通过kubectl命令进行创建、查看、管理的操作。

可详细查看kubectl命令中的参数信息

#kubectl --help

查看资源对象简写

#kubectl api-resources

1:创建命令 kubectl run

如:创建资源,多副本的创建

# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3

# kubectl get pods可看到3个副本集

动态监控pod资源的创建

# kubectl get pods -w

查看pod资源分配在哪个node节点

# kubectl get pods -o wide

# kubectl get all 可以看到更详细的

pod资源的创建伴随着控制器deployment和replicaset副本集的创建

2:删除命令

# kubectl delete deploy/nginx

# kubectl delete deploy/nginx-deployment

# kubectl get pods

示例:

项目的生命周期:创建–>发布–>更新–>回滚–>删除

master1节点:

1:创建nginx

创建nginx,指定镜像,指定端口,指定副本数量

# kubectl run nginx --image=nginx:latest --port=80 --replicas=3

动态监控pod资源的创建

# kubectl get pods -w

没有指定命名空间,默认 是default

# kubectl get pods

# kubectl get pods,deployment,replicaset

伴随着pod资源的创建,同时创建了deployment和replicaset

2:发布nginx serivce提供负载均衡的功能

# kubectl expose deployment nginx --port=80 --target-port=80 --name=nginx-service --type=NodePort

# kubectl get svc

不管访问哪个nodepodIP,都可以访问到资源,是因为有kube-proxy负载均衡

# kubectl get svc

可看负载均衡端口46091

查看网络状态详细信息

# kubectl get pods -o wide

查看关联后端的节点

# kubectl get endpoints

kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及userspace两种模式,在kubernetes 1.8之后引入了ipvs模式

在node1 , node2节点:

# yum install ipvsadm -y

# ipvsadm -L -n

可看到根据轮询算法来调度

master1节点:

# kubectl get pods

复制pod资源name

查看pod资源 的日志

# kubectl logs 粘贴pod资源name

查看这3个nginx 现在还没有日志,是因为还没有访问

# kubectl get svc

可看到端口46091

网页浏览192.168.150:46091、168.151:46091

再次查看这3个nginx日志

两个可以查看,一个没有

是docker0网关来访问的

3:更新nginx 为1.14版本

谷歌浏览器重新加载刷新页面查看nginx版本信息,可看到版本号是nginx/1.17.10

更新修改nginx版本

# kubectl set image deployment/nginx nginx=nginx:1.14

动态监听状态

# kubectl get pods -w

# kubectl get pods

原本的容器没有了,出来3个新的容器

得出结论:

容器资源更新,不可以被重启,只能被删除,重新创建;先创建一个新的 再删除一个旧的。副本数量是3,不能低于3个,所以创建一个新的容器之后,才能删旧的

重新刷新网页,看到版本已更新到nginx/1.14.2

4:回滚操作

查看历史版本

# kubectl rollout history deployment/nginx

执行回滚

# kubectl rollout undo deployment/nginx

检查回滚状态

# kubectl rollout status deployment/nginx

重新刷新网页,看到版本已更新到nginx/1.17.10

5:删除nginx

创建一个pod,会创建3个资源:pod 、deployment 、relplicaset

但同时也要删除 对外提供服务的service资源

删除pod资源

# kubectl delete deployment/nginx

# kubectl get pods -w

# kubectl get pods

service对外提供的服务 也要删

# kubectl get svc

删除服务SVC

# kubectl delete svc/nginx-service

# kubectl get svc

yaml文件创建pod资源

通过生成的yaml格式或json格式传递给apiserver进行创建、查看、管理的操作。

json格式适用于开发;yaml格式适用于维护。

创建pod资源的同时,需要创建service资源 做端口映射 ,把服务提供出去

可以把两个文件,写到一起,用3个短横杠进行分隔。表示两个文件,且创建时有先后顺序

1:用yaml文件格式创建pod资源

首先查看版本,然后编辑yaml文件

# kubectl api-versions 查看版本

# mkdir demo

# cd demo

# vim nginx-deployment.yaml

apiVersion: apps/v1//api版本

kind: Deployment//类型 控制器

metadata: //摘要信息描述

name: nginx-deployment

labels://标签

app: nginx

spec://选择器

replicas: 3//定义副本数量

selector:

matchLabels://匹配标签

app: nginx

template://模板

metadata:

labels:

app: nginx

spec:

containers://定义容器

- name: nginx//容器名称

image: nginx:1.15.4//选择镜像

ports:

- containerPort: 80//容器端口

通过执行yaml文件 进行pod资源的创建

# kubectl create -f nginx-deployment.yaml

# kubectl get pods

创建的pod资源 已经是Running运行状态

2:用yaml格式 创建service资源,才能对外提供服务

# vim nginx-service.yaml

apiVersion: v1//API版本

kind: Service//service类型

metadata:

name: nginx-service //serivice资源名称

labels:

app: nginx

spec:

type: NodePort//指明哪种类型发布出去,对外提供服务

ports:

- port: 80//指定内部端口80

targetPort: 80//对外提供映射端口80

selector://选择器

app: nginx//指的是pod资源名称,要把哪个资源发布出去

创建service服务

# kubectl create -f nginx-service.yaml

# kubectl get svc

网页访问两个node节点192.168.195.150:32612、192.168.195.151:32612可看到nginx首页

我们常常会因为层级格式的错误导致创建不成功,如少个空格,或者多个空格,不过 yaml文件格式和json文件格式是可以通过kubectl命令导出模板,我们就可通过模板进行修改

下面举例:

(1)根据创建命令导出模板

自测命令的正确性,并不执行创建

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

查看生成json格式,并不执行创建

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

查看生成yaml格式,并不执行创建

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

查看生成yaml格式,并不执行创建, 并保存到my-deployment.yaml文件

# kubectl run nginx-deployment --image=nginx --port=80 --replicas=3 --dry-run -o yaml > my-deployment.yaml

(2)可根据现有的pod资源生成模板导出yaml或者json文件

将现有的资源生成模板导出

#kubectl get deploy/nginx-deployment --export -o yaml

将现有的资源生成模板导出,并保存到文件中

#kubectl get deploy/nginx-deployment --export -o yaml > my-deploy.yaml

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐