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

kubernates实战

使用k8s来部署tomcat
1、创建一个部署,并指定镜像地址

kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8

2、查看部署pod状态

kubectl get pods # 获取default名称空间下的pods
kubectl get pods --all-namespaces # 获取所有名称空间下的pods
kubectl get pods -o wide # 获取pods详细信息

3、查看所有pods,deployment,service,replicaset信息

[root@k8s-master ~]# kubectl get all
NAME                           READY   STATUS    RESTARTS   AGE
pod/tomcat6-5f7ccf4cb9-8qjhm   1/1     Running   0          19m

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        23h
service/tomcat6      NodePort    10.96.226.207   <none>        80:32383/TCP   3m16s

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/tomcat6   1/1     1            1           19m

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/tomcat6-5f7ccf4cb9   1         1         1       19m

4、向外部暴露service服务

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

–port:pod的端口
–target-port:容器端口
–type=NodePort:指定暴露的方式

5、查看暴露的service

[root@k8s-master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        23h
tomcat6      NodePort    10.96.226.207   <none>        80:32383/TCP   12s

在上面我们可以看到k8s向外部暴露tomcat端口为32383
结合下面信息我们可以看到tomcat6是在node3上面的

[root@k8s-master ~]# kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
tomcat6-5f7ccf4cb9-8qjhm   1/1     Running   0          20m   10.244.2.2   k8s-node3   <none>           <none>

这里node3的地址是192.168.1.109,所以访问192.168.1.109:32383即可访问tomcat首页
在这里插入图片描述
6、动态扩容
扩容三个tomcat

kubectl scale --replicas=3 deployment tomcat6

查看pod信息

[root@k8s-master ~]# kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS   AGE     IP           NODE        NOMINATED NODE   READINESS GATES
tomcat6-5f7ccf4cb9-2bjhq   1/1     Running   0          5m56s   10.244.2.3   k8s-node3   <none>           <none>
tomcat6-5f7ccf4cb9-8qjhm   1/1     Running   0          33m     10.244.2.2   k8s-node3   <none>           <none>
tomcat6-5f7ccf4cb9-s42g5   1/1     Running   0          5m56s   10.244.1.4   k8s-node2   <none>           <none>

此时使用node2地址也能访问tomcat了(http://192.168.1.105:32383/)

7、故障转移和容量伸缩
假如node3节点挂点,会重新在node2节点上拉起两个pod,保持pod数量保持3个,
假如手动stop节点上的容器,也会自动重新拉起。
重新设置pod复制数量为1时(kubectl scale --replicas=1 deployment tomcat6),会选择停掉三个pod中的两个。

8、删除

[root@k8s-master ~]# kubectl get all
NAME                           READY   STATUS    RESTARTS   AGE
pod/tomcat6-5f7ccf4cb9-2bjhq   1/1     Running   0          9m50s
pod/tomcat6-5f7ccf4cb9-8qjhm   1/1     Running   0          37m
pod/tomcat6-5f7ccf4cb9-s42g5   1/1     Running   0          9m50s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        23h
service/tomcat6      NodePort    10.96.226.207   <none>        80:32383/TCP   21m

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/tomcat6   3/3     3            3           37m

NAME                                 DESIRED   CURRENT   READY   AGE
replicaset.apps/tomcat6-5f7ccf4cb9   3         3         3       37m

可以删除deployment,service,pod

kubectl delete pod/tomcat6-5f7ccf4cb9-2bjhq
kubectl delete service/tomcat6
kubectl delete deployment.apps/tomcat6

http://www.kler.cn/a/448743.html

相关文章:

  • KingbaseES(金仓数据库)入门学习
  • 云原生服务网格Istio实战
  • 重拾设计模式--观察者模式
  • 【学习记录】浏览器指纹相关学习记录(指纹介绍、获取指纹、修改指纹、随机指纹保护隐私等)
  • Python中的上下文管理器:从资源管理到自定义实现
  • iOS + watchOS Tourism App(含源码可简单复现)
  • 腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代
  • Nacos 3.0 考虑升级到 Spring Boot 3 + JDK 17 了!
  • openjdk17 从C++视角 看字节码ldc指令字符串加载过程
  • 三、使用langchain搭建RAG:金融问答机器人--检索增强生成
  • docker 为单个容器设置代理
  • Input子系统驱动---学习记录
  • 整理一些/etc/X11/xorg.conf,/etc/X11/xorg.conf.d相关知识的学习笔记
  • 微服务openfeign配置重试机制
  • Unittest01|TestCase、断言、装饰器、夹具、清理函数、ddt
  • FastAPI vs Go 性能对比分析
  • 语言模型与向量模型:深入解析与实例剖析
  • PHP中实现拓扑算法
  • Bazel CI
  • 基于 SSM 和 Vue 的 WEB 开放性实验室集成管理系统
  • 【leetcode100】排序链表
  • springboot根据租户id动态指定数据源
  • react Moment.js 是一个流行的 JavaScript 库,用于处理日期和时间。它提供了丰富的功能,包括日期格式化、解析、操作和国际化
  • 前端 下载文件时如何处理后端返回的 文件流
  • Vulkan 学习(10)---- Vulkan SwapChain 创建
  • 实现 React 电子签名功能:从零开始构建一个完整的解决方案