K8S进一步实战

1、kubectl命令使用

kubectl是apiserver的客户端工具,工作在命令行下,能够连接apiserver实现各种增删改查等操作。
kubectl官方使用文档:
https://kubernetes.io/zh/docs/reference/kubectl/overview/

在这里插入图片描述
K8S的各种命令帮助文档做得非常不错,遇到问题可以多查help帮助。

2、创建一个tomcat应用程序

使用kubectl create deployment命令可以创建一个应用部署deployment与POD(容器组),Pod里可以有多个容器

# my-tomcat表示pod的名称 --image表示镜像地址
kubectl create deployment my-tomcat --image=tomcat:7.0.75-alpine

在这里插入图片描述
查看一下deployment的信息

kubectl get deployment

在这里插入图片描述
查看Pod打印的日志

kubectl get pod -o wide

在这里插入图片描述
查看Pod打印的日志

kubectl logs my-tomcat-685b8fd9c9-ltcfk(Pod名称)

使用exec可以在Pod容器中执行命令,这里使用env命令查看环境变量

kubectl exec my-tomcat-685b8fd9c9-ltcfk -- env(Pod名称)

在这里插入图片描述
进入Pod容器内部并执行bash命令,如果想退出容器可以使用exit命令

kubectl exec -it my-tomcat-685b8fd9c9-ltcfk -- sh

在这里插入图片描述
访问一下这个tomcat pod
集群内访问(在集群中任一节点都可以访问)

curl 10.244.169.129:8080 # IP地址“查看Pod打印的日志”部分,日志ip部分

在这里插入图片描述
在这里插入图片描述
集群外部访问
在外部无法访问。
当我们在集群之外访问发现是无法访问的,那么集群之外的客户端如何才能访问呢?这就需要我们的service服务了,下面我们就创建一个service,使外部客户端可以访问我们的pod

3、创建一个service

kubectl expose deployment my-tomcat --name=tomcat --port=8080 --type=NodePort

在这里插入图片描述

# 查看service信息,port信息里冒号后面的端口号就是集群对外暴露的访问端口
kubectl get svc -o wide

在这里插入图片描述
集群外部访问
使用集群**任意节点的ip(master节点、Node节点都可以)**加上暴露的端口就可以访问
在这里插入图片描述
service服务有个特点,如果端口暴露类型为NodePort,那么可以通过集群内任意一台主机加暴露的端口进行访问

现在我们来删除刚刚添加的pod,看看会发生什么

# 查看pod信息,-w意思是一直等待观察pod信息的变动
kubectl get pod -w

在这里插入图片描述
打开另外一个命令窗口执行如下命令,同时观察之前窗口的变化情况

kubectl delete pod my-tomcat-685b8fd9c9-ltcfk

在这里插入图片描述
我们可以看到之前那个tomcat的pod被销毁,但是又重新启动了一个新的tomcat pod,这是K8S的服务自愈能力,不需要运维人员干预。

查看deployment和service的状态

kubectl get deployment,svc

在这里插入图片描述
再一次访问service地址,依然可以访问成功
在这里插入图片描述

4、对my-tomcat这个deployment进行扩缩容

# 扩容到5个pod
kubectl scale --replicas=5 deployment my-tomcat

查看pod信息,发现已经有5个tomcat的pod
在这里插入图片描述
缩容

# 缩容到3个pod
kubectl scale --replicas=3 deployment my-tomcat

在这里插入图片描述

5、滚动升级与回滚

对my-tomcat这个deployment进行滚动升级和回滚,将tomcat版本由tomcat:7.0.75-alpine升级到tomcat:8.0.41-jre8-alpine,再回滚到tomcat:7.0.75-alpine
滚动升级

kubectl set image deployment my-tomcat tomcat=tomcat:8.0.41-jre8-alpine

可以执行kubectl get pod -w 观察pod的变动情况,可以看到有的pod在销毁,有的pod在创建
在这里插入图片描述
查看pod信息

kubectl get pod

在这里插入图片描述
查看某个pod的详细信息,发现pod里的镜像版本已经升级了

kubectl describe pod my-tomcat-547db86547-wpdm7

在这里插入图片描述
访问下tomcat,看到版本已经升级
在这里插入图片描述
版本回滚
查看历史版本

kubectl rollout history deploy my-tomcat

在这里插入图片描述
回滚到上一个版本

kubectl rollout undo deployment my-tomcat # --to-revision 参数可指定回退的版本

在这里插入图片描述
再次访问tomcat,发现版本已经回退
在这里插入图片描述

6、标签的使用

通过给资源添加Label,可以方便的管理资源(如Deployment、Pod、Service等)。
查看Deployment中所包含的Label

kubectl describe deployment my-tomcat

在这里插入图片描述
通过Label查看Pod

kubectl get pods -l app=my-tomcat

在这里插入图片描述
通过Label查询Service

kubectl get services ‐l app=my‐tomcat

在这里插入图片描述
给Pod添加Label

kubectl label pod my-tomcat-685b8fd9c9-4tlvx version=v1

在这里插入图片描述
查看pod的详细信息,可以查看label信息

kubectl describe pods my-tomcat-685b8fd9c9-4tlvx

在这里插入图片描述
通过Label查询Pod

kubectl get pods -l version=v1

在这里插入图片描述
通过Label删除服务

kubectl delete service -l app=test-service

小结:

kubectl create deployment # 创建一个deployment来管理创建的容器
kubectl get # 显示一个或多个资源,可以使用标签过滤,默认查看当前名称空间的资源
kubectl expose # 将一个资源暴露为一个新的K8S的service资源,资源包括pod(po),service(svc),replicationcontroller(rc),deployment(deploy),replicaset(rs)
kubectl describe # 显示特定资源或资源组的详细信息
kubectl scale # 可以对Deployment,replicaSet,Replication Controller,或者StatefulSet设置新的值,可以指定一个或多个先决条件
kubectl set # 更改现有的应用程序资源
kubectl rollout # 资源回滚管理

以上就是kubectl命令行下一些简单的操作,主要是让我们对K8S有一个快速的认识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

core321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值