k8s学习之路 | Day7 k8s 入门操作(一)

我之前按照官方的minikube流程走了一遍,现在是我自己搭建的 k8s 环境,加深一下命令操作的印象和基础操作,反正学习也就是反反复复才能记得牢固

  • 现在每天学习的时间慢慢少了,学习的内容也只能一步步来,都是慢慢抽出来的,一边还要工作

image-20230213160210768

我的环境

环境说明

版本信息

  • kubectl:v1.21.0
  • kubelet:Kubernetes v1.21.0

image-20230212204051203

  • 所有 pod 处于running状态,就很完美了

基础操作

如何部署一个应用?

在 docker 环境中,我们是通过docker run来跑一个应用容器的,在 k8s 环境中,也可以直接通过run进行一个应用容器部署

举个栗子

我们可以使用kubectl run --help看一下最基本的命令语法:

kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

  • 一个最简单的run:kubectl run my-nginx --image=nginx

image-20230213132527700

  • k8s 环境中最小管理单元就是 pod,之前有说过,我们直接查看一下 pod 资源情况:kubectl get pod

image-20230213132637935

  • 我们尝试删除这个通过run起来的pod:kubectl delete pod my-nginx

image-20230213132732290

  • 删除以后,系统再也不会自动重启这个 pod 了
  • 所以通过这个方式直接运行的容器,肯定是没有保障的,一般也不会推荐这种方式运行

Deployment

我们知道,k8s 里面绝大对数都是对象,我们部署一个应用,其实也算是要创建这个对象

  • 使用kubectl create -help查看创建帮助信息

image-20230213133208673

  • 可以看到如果我们要部署一个应用,可以使用kubectl create deployment方式
#语法规则
kubectl create deployment NAME --image=image -- [COMMAND] [args...] [options]
  • 一个最简单的部署实例
#创建一次部署,使用tomcat:9.0.71-jdk17-temurin-focal镜像,部署名称叫:demo-tomcat
#这个地方我拉取镜像有点问题,我就用的自己的阿里云仓库
kubectl create deployment \
	demo-tomcat \
	--image=registry.cn-hangzhou.aliyuncs.com/publiclibrary/tomcat:8.5-jdk11-temurin-focal

image-20230213145828504

  • 查看一个部署的实例状态(如果是需要拉取镜像,这个时间可能要多等一下子)
kubectl get pod

image-20230213150006778

  • 按照之前我们的学习知识来讲,这次部署的大致流程应该是:命令行kubectl发送部署信息给api-server,由api-server保存在etcd中,再经过集群内部的一些调度分析,最终决定在哪个节点运行的信息上报给了api-server,其他node节点的kubelet一直监听着这个上报信息,k8s-02这台node节点发现是在自己主机上运行,就接受到了这个任务,就跑起来了

  • 我们每次都是通过kubectl get pod去查看我们一次部署后的资源启动情况,所以在 k8s 环境中,一次部署就意味着启动了一个 Pod,而 Pod 里面才是具体跑的容器,而且不止一个容器

  • 我们尝试下如果删除一个正在运行的 Pod ,k8s 具不具备自动拉取自愈机制

#删除一个Pod
kubectl delete pod demo-tomcat-7bcd448cb8-v7tdd

#查看Pod状态
kubectl get pod

image-20230213150633219

  • 通过实验我们发现,Pod 在删除以后,会自动再进行拉取一个新的 Pod,也就是说在deployment下的Pod是具有自愈能力的

总结一下:

  1. k8s 环境中,通过部署操作deployment,可以创建一个应用程序
  2. deployment创建的应用程序就不再是一个容器了,而是 k8s 集群中最小的管理单元 Pod
  3. 一个 Pod 不止一个容器,而是一个容器组
  4. 通过deployment创建的程序,k8s 会一直监听它的状态,并且提供了一种自我修复的机制来解决相关故障
  5. deployment处于Master节点上,通过部署操作deploymentMaster 节点会选择合适的 worker 节点创建 containercontainer 会被包含在 Pod

image-20230212214959743

关于 Pod

上面我们知道了,deployment操作后,k8s 创建的是一个 Pod,这个Pod里面用来跑应用容器

image-20230213151832522

  • Pod是一个容器组,用来绑定一组容器进程
  • 一个Pod下,里面的容器都是共享资源的(包括存储、网络、容器的基本信息等)

常用命令

kubectl get

显示资源列表

#获取所有资源类型为deployment的信息
kubectl get deployments

#获取所有资源类型为Pod的信息
kubectl get pods

#获取所有资源类型为node的信息
kubectl get nodes

image-20230213152423215

##选项-n可以指定命名空间
#获取所有的命名空间信息
kubectl get namespaces

#查看指定命名空间的资源信息
kubectl get deployments -n kube-system
kubectl get pods -n kube-system

#查看所有命名空间的资源信息
kubectl get deployments -A
kubectl get pods -A

image-20230213153011052

#如何查看所需要查询的资源是否在命名空间里面呢?
#查询资源不在命名空间的资源
kubectl api-resources --namespaced=false
#查询资源在命名空间的资源
kubectl api-resources --namespaced=true

kubectl describe

显示资源的详细信息

#语法规则:kubectl describe 资源类型 资源名称
kubectl describe deployment demo-tomcat
kubectl describe pod demo-tomcat-7bcd448cb8-6m52x

image-20230213153500403

image-20230213153535620

kubectl logs

查看 pod 中的容器日志(类似于 docker logs

#查看pod日志
kubectl logs demo-tomcat-7bcd448cb8-6m52x

#实时持续查看pod日志
kubectl logs -f demo-tomcat-7bcd448cb8-6m52x

kubectl exec

在 pod 中的容器环境下执行命令(类似于 docker exec

#先尝试用类似于docker exec 的方式
kubectl exec -it demo-tomcat-7bcd448cb8-6m52x sh

image-20230213154052273

上述操作可以进入容器内部,但是 k8s 给出了另一种方式,上面这种方式应该会舍弃的吧

##试试官网的推荐方式:kubectl exec [POD] -- [COMMAND]
kubectl exec -it demo-tomcat-7bcd448cb8-6m52x -- sh

image-20230213154352278

image-20230213154420378

kubectl run

可以单独跑一个最小的单元Pod

  • 这种方式一般不用
#最开始我就尝试过了
kubectl run my-nginx --image=nginx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值