当前位置:网站首页>Some commands of kubernetes
Some commands of kubernetes
2022-07-30 10:20:00 【Magic Dance Tsinghua-Fang】
Deployment(部署) 部署应用
- kubectl create deploy xxxxxx :命令行会给api-server发送要部署xxx的请求
# kubectl create 帮我们创建k8s集群中的一些对象
kubectl create --help
kubectl create deployment 这次部署的名字 --image=应用的镜像
#Create a deployment named my-nginx that runs the nginx image
kubectl create deployment my-nginx --image=nginx
##最终在一个机器上有pod、这个pod其实本质里面就是一个容器
k8s_nginx_my-nginx-6b74b79f57-snlr4_default_dbeac79e-1ce9-42c9-bc59-c8ca0412674b_0
### k8s_镜像(nginx)_pod名(my-nginx-6b74b79f57-snlr4)_容器名(default_dbeac79e-1ce9-42c9-bc59-c8ca0412674b_0)
# Create a deployment with command
kubectl create deployment my-nginx --image=nginx -- date
# Create a deployment named my-nginx that runs the nginx image with 3 replicas.
kubectl create deployment my-nginx --image=nginx --replicas=3
# Create a deployment named my-nginx that runs the nginx image and expose port 80.
kubectl create deployment my-nginx --image=nginx --port=80
- 在k8s中,通过发布 Deployment,可以创建应用程序 (docker image) 的实例 (docker container),这个实例会被包含在称为 Pod 的概念中,Pod 是 k8s 中最小可管理单元.
- 在 k8s 集群中发布 Deployment 后,Deployment 将指示 k8s 如何创建和更新应用程序的实例,master 节点将应用程序实例调度到集群中的具体的节点上.
- 创建应用程序实例后,Kubernetes Deployment Controller 会持续监控这些实例.如果运行实例的 worker 节点关机或被删除,则 Kubernetes Deployment Controller 将在群集中资源最优的另一个 worker 节点上重新创建一个新的实例.这提供了一种自我修复机制来解决机器故障或维护问题.
- 在容器编排之前的时代,各种安装脚本通常用于启动应用程序,但是不能够使应用程序从机器故障中恢复.通过创建应用程序实例并确保它们在集群节点中的运行实例个数,Kubernetes Deployment 提供了一种完全不同的方式来管理应用程序.
- Deployment 处于 master 节点上,通过发布 Deployment,master 节点会选择合适的 worker 节点创建 Container(即图中的正方体),Container 会被包含在 Pod (即蓝色圆圈)里.
其他命令
kubectl get - 显示资源列表
# kubectl get 资源类型 #获取类型为Deployment的资源列表 kubectl get deployments #获取类型为Pod的资源列表 kubectl get pods #获取类型为Node的资源列表 kubectl get nodes# 查看所有名称空间的 Deployment kubectl get deployments -A kubectl get deployments --all-namespaces # 查看 kube-system 名称空间的 Deployment kubectl get deployments -n kube-system#####并不是所有的对象都在名称空间中 # 在名称空间里 kubectl api-resources --namespaced=true # 不在名称空间里 kubectl api-resources --namespaced=falsekubectl describe - 显示有关资源的详细信息
# kubectl describe 资源类型 资源名称 #查看名称为nginx-XXXXXX的Pod的信息 kubectl describe pod nginx-XXXXXX #查看名称为nginx的Deployment的信息 kubectl describe deployment my-nginxkubectl logs - 查看pod中的容器的打印日志(和命令docker logs 类似)
# kubectl logs Pod名称 #查看名称为nginx-pod-XXXXXXX的Pod内的容器打印的日志 #本案例中的 nginx-pod 没有输出日志,所以您看到的结果是空的 kubectl logs -f nginx-pod-XXXXXXXkubectl exec - 在pod中的容器环境内执行命令(和命令docker exec 类似)
# kubectl exec Pod名称 操作命令 # 在名称为nginx-pod-xxxxxx的Pod中运行bash kubectl exec -it nginx-pod-xxxxxx /bin/bash ### 注意:新版1.21.0 提示这个命令会过期kubectl run
也可以独立跑一个Pod## kubectl run --help kubectl run nginx --image=nginx
总结:
kubectl create 资源 #创建任意资源
kubectl create deploy #创建部署
kubectl run #只创建一个Pod
kubectl get 资源名(node/pod/deploy) -n xxx(指定名称空间,默认是default) #获取资源
kubectl describe 资源名(node/pod/deploy) xxx #描述某个资源的详细信息
kubectl logs 资源名 ##查看日志
kubectl exec -it pod名 -- 命令 #进pod并执行命令
kubectl delete 资源名(node/pod/deploy) xxx #删除资源
Kubernetes Service 总览
- Kubernetes 的 Service 是一个抽象层,它定义了一组 Pod 的逻辑集,并为这些 Pod 支持外部流量暴露、负载平衡和服务发现
- Service 使从属 Pod 之间的松耦合成为可能. 和其他 Kubernetes 对象一样, Service 用 YAML (更推荐) 或者 JSON 来定义. Service 下的一组 Pod 通常由 LabelSelector (请参阅下面的说明为什么您可能想要一个 spec 中不包含
selector的服务)来标记 - 尽管每个 Pod 都有一个唯一的 IP 地址,但是如果没有 Service ,这些 IP 不会暴露在群集外部.Service 允许您的应用程序接收流量.Service 也可以用在 ServiceSpec 标记
type的方式暴露 - ClusterIP (默认) - 在集群的内部 IP 上公开 Service .这种类型使得 Service 只能从集群内访问.
- NodePort - 使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service .使用
<NodeIP>:<NodePort>从集群外部访问 Service.是 ClusterIP 的超集. - LoadBalancer - 在当前云中创建一个外部负载均衡器(如果支持的话),并为 Service 分配一个固定的外部IP.是 NodePort 的超集.
- ExternalName - 通过返回带有该名称的 CNAME 记录,使用任意名称(由 spec 中的
externalName指定)公开 Service.不使用代理.这种类型需要kube-dns的v1.7或更高版本.
Service 和 Label
Service 通过一组 Pod 路由通信.Service 是一种抽象,它允许 Pod 死亡并在 Kubernetes 中复制,而不会影响应用程序.在依赖的 Pod (如应用程序中的前端和后端组件)之间进行发现和路由是由Kubernetes Service 处理的.
Service 匹配一组 Pod 是使用 标签(Label)和选择器(Selector), 它们是允许对 Kubernetes 中的对象进行逻辑操作的一种分组原语.标签(Label)是附加在对象上的键/值对,可以以多种方式使用:
- 指定用于开发,测试和生产的对象
- 嵌入版本标签
- 使用 Label 将对象进行分类
kubectl expose
kubectl expose deployment tomcat6 --port=8912 --target-port=8080 --type=NodePort
## --port:集群内访问service的端口 8912
## --target-port: pod容器的端口 8080
## --nodePort: 每个机器开发的端口 30403
## 进行验证
kubectl get svc
curl ip:port
kubectl expose #暴露,成一个负载均衡网络
## kubectl exec 进去pod修改,并测试负载均衡
伸缩应用程序-扩缩容
我们创建了一个 Deployment ,然后通过 服务提供访问 Pod 的方式.我们发布的 Deployment 只创建了一个 Pod 来运行我们的应用程序.当流量增加时,我们需要对应用程序进行伸缩操作以满足系统性能需求.
## 扩展
## 扩容的Pod会自动加入到他之前存在的Service(负载均衡网络)
kubectl scale --replicas=3 deployment tomcat6
#持续观测效果
watch kubectl get pods -o wide
边栏推荐
- ospf2 two-point two-way republish (question 2)
- Study Notes 10--Main Methods of Local Trajectory Generation
- JCL 学习
- hcip06 ospf special area comprehensive experiment
- Re16: Read the paper ILDC for CJPE: Indian Legal Documents Corpus for Court Judgment Prediction and Explanation
- shell脚本
- 新一代开源免费的终端工具,太酷了
- 元宇宙改变人类工作模式的四种方式
- GNOME 新功能:安全启动被禁用时警告用户
- 4、yolov5-6.0 ERROR: AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘ 解决方案
猜你喜欢

百度推广助手遇到重复关键字,验证错误,怎么一键删除多余的

Re16:读论文 ILDC for CJPE: Indian Legal Documents Corpus for Court Judgment Prediction and Explanation

线程池方式开启线程--submit()和execute()的区别

Re18: Read the paper GCI Everything Has a Cause: Leveraging Causal Inference in Legal Text Analysis

在机器人行业的专业人士眼里,机器人行业目前的情况如何?

GNOME 新功能:安全启动被禁用时警告用户

【深度学习】(问题记录)<对一个变量求梯度得到什么>-线性回归-小批量随机梯度下降

nacos实战项目中的配置

包、类及四大权限和static

Day113.尚医通:微信登录二维码、登录回调接口
随机推荐
shell脚本
Js array operating mobile for encapsulation
105. 从前序与中序遍历序列构造二叉树(视频讲解!!)
Basemap和Seaborn
mysql安装教程【安装版】
【HMS core】【FAQ】HMS Toolkit典型问题合集1
梅科尔工作室-看鸿蒙设备开发实战笔记五——驱动子系统开发
Matplotlib--plot markers
【深度学习】(问题记录)<对一个变量求梯度得到什么>-线性回归-小批量随机梯度下降
Re16: Read the paper ILDC for CJPE: Indian Legal Documents Corpus for Court Judgment Prediction and Explanation
Four ways the Metaverse is changing the way humans work
Scrapy爬虫之网站图片爬取
分页 paging
通过构建一个顺序表——教你计算时间复杂度和空间复杂度(含递归)
PyQt5 - draw text on window
数据库脏读、不可重复读、幻读以及对应的隔离级别
HR团队如何提升效率?人力资源RPA给你答案
MFCC to audio, the effect should not be too funny >V
(BUG record) No module named PIL
大数据产品:标签体系0-1搭建实践