当前位置: 首页 > java >正文

Kubernetes(k8s)学习笔记(四)--入门基本操作

本文通过kubernetes部署tomcat集群,来学习和掌握kubernetes的一些入门基本操作

前提条件

1.各个节点处于Ready状态;

2.配置好docker镜像库(否则会出现ImagePullBackOff等一些问题);

3.网络配置正常(否则即使应用发布没问题,浏览器访问不了)。

实现的过程

一.编写一个tomcat发布的yaml文件tomcat-9.0-deployment.yaml,内容类似下面这样的:

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: tomcat9name: tomcat9
spec:replicas: 3 #指定集群的节点个数selector:matchLabels:app: tomcat9template:metadata:labels:app: tomcat9spec:containers:- image: tomcat:9.0.85-jre8name: tomcat# 启动时自动复制 webapps.dist 内容到 webappslifecycle:postStart:exec:command: ["/bin/sh", "-c", "cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps/"]ports:- containerPort: 8080
--- # 使用三个短横线分隔不同的配置,一个yaml文件可以配置多个
apiVersion: v1
kind: Service
metadata:labels:app: tomcat9name: tomcat9
spec:ports:- port: 80protocol: TCPtargetPort: 8080nodePort: 30080  # 指定易记端口,对外访问端口selector:app: tomcat9type: NodePortexternalTrafficPolicy: Cluster

二.使用yaml文件部署tomcat集群

kubectl apply -f ./tomcat-9.0-deployment.yaml

 执行后输出:deployment和service created的信息

三.验证应用的发布

使用下面的命令,查看所有资源情况

kubectl get all 

 

从上图可以看到,3个tomcat节点都处于运行状态,对外访问端口是30080。

然后使用浏览器访问,出现tomcat的欢迎页面,注意这里的IP不是CLUSTER-IP,而是前面文章配置时获得的ip。可使用这个命令查看启动是否正常,是否可访问:

[root@k8s-node1 k8s]# kubectl exec -it tomcat9-f4d6f4687-7vwch -- curl -I localhost:8080
HTTP/1.1 200 
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Sat, 03 May 2025 08:06:38 GMT

返回200则表示正常。

如果不知道yaml文件怎么写,可以尝试在命令后面添加--dry-run,这样就会输出示例yaml文件

例如:

kubectl create deployment tomcat9 --image=tomcat:9 --dry-run -o yaml > tomcat9-deployment.yaml

就会在当前目录下输出一个tomcat9-deployment.yaml文件从而获得app的配置信息,但并不会创建一个发布,同样kubectl expose deployment tomcat9 --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml则在当前目录下输出service配置的内容,然后把service配置的内容添加到前面的tomcat9-deployment.yaml(使用---分隔开来),然后以最终的tomcat9-deployment.yaml来发布应用。

拓展:常用命令 

1.获取所有的命名空间

kubectl get ns

2.获取所有命名空间的节点信息,用户创建的发布均位于default空间下:

kubectl get pods --all-namespaces

3.获得默认命名空间的节点基本信息

kubectl get pods

3.获得默认命名空间的节点详细信息

kubectl get pods  -o wide

4.获取所有资源信息

kubectl get all

5.获取所有的节点信息

kubectl get nodes

6.获取所有的服务信息

kubectl get svc

7.使用指定文件创建发布

kubectl apply -f xxx.yaml

8.删除发现的应用

kubectl delete deployment.apps/应用名

9.向外暴露端口

kubectl expose deployment tomcat9 --port=80 --target-port=8080 --type=NodePort

10.将应用扩容到指定数目的数量

kubectl scale --replicas=3 deployment 应用名

11.进入应用内部

kubectl exec -it pod/应用名称 -- /bin/bash

12.获得服务的详细信息

kubectl describe service tomcat9

http://www.xdnf.cn/news/3612.html

相关文章:

  • 双指针(5)——有效三角形个数
  • 杭电oj(1180、1181)题解
  • “淘宝闪购”提前4天全量,意味着什么?
  • 传奇各职业/战士/法师/道士/手套/手镯/护腕/神秘腰带爆率及出处产出地/圣战/法神/天尊/祈祷/虹魔/魔血
  • Demo02_基于寄存器+标准库开发的项目
  • 传奇各职业/战士/法师/道士/戒指爆率及出处产出地/圣战/法神/天尊/虹魔/魔血/麻痹/超负载/求婚/隐身/传送/复活/护身/祈祷/火焰
  • Linux系统常用命令、标准C库函数和系统调用
  • new和malloc的区别
  • 一场陟遐自迩的 SwiftUI + CoreData 性能优化之旅(上)
  • Redis总结及设置营业状态案例
  • 泰迪杯特等奖案例学习资料:基于CLIP模型微调与知识蒸馏的多模态图文检索系统设计
  • B站Michale_ee——ESP32_IDF SDK——FreeRTOS_7 流数据缓冲区、消息缓冲区
  • Python基于深度学习的网络舆情分析系统(附源码,部署)
  • 基于蒙特卡洛模拟的电路容差分析与设计优化
  • 倒排索引与数据库索引
  • 拆解一个550-800Mhz的LC滤波器内部大图配测试曲线
  • 这款软件的第三方评测:功能、易用性与性能表现如何?
  • 链表系列一> K 个一组翻转链表
  • wsl安装
  • 自动化测试项目2 --- 比特纵横 [软件测试实战 Java 篇]
  • 泰迪杯特等奖案例学习资料:基于时空图卷积网络的结构健康监测数据异常识别系统
  • OrbitControls
  • 【学习笔记】第十章:序列建模:递归神经网络(RNN)
  • k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)
  • Python 数据智能实战 (8):基于LLM的个性化营销文案
  • Redis基本使用
  • 线程池实现
  • 03 - spring security自定义登出页面
  • 学习c语言的第16天
  • 用c 编写的笔记搜索程序