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

跨可用区的集群k8s的基本操作和配置理解

service

启动:kubectl -f api_service.yaml -n <namespace>

查询:kubectl get svc -n <namespace> ;

修改:kubectl apply -f api_service.yaml -n <namespace>

停止service: kubectl delete svc [service名字] 或者 kubectl delete -f api_service.yaml (删除文件中定义的所有service)

pod

启动:kubectl -f api.yaml -n <namespace>

查询:kubectl get pods -n <namespace> ;kubectl describe pod [podName] -n <namespace>

修改:kubectl apply -f api.yaml -n <namespace>

删除pod重启: kubectl delete pod [pod_name]

停止pod:kubectl delete -f api.yaml

:pod就是在deployment下面定义的,因此停止了pod,deployment也会停止,而删除pod,由于deployment还在,所以会自动重启

pod和service一般可以写到一个文件中,一次性全部启动,一次性全部删除

apisixroute

启动:kubectl -f apisixroute.yaml -n <namespace>

查询:kubectl get apisixroute -n <namespace> ;kubectl describe apisixroute -n <namespace>

修改:kubectl apply -f apisixroute.yaml -n <namespace>

停止: kubectl delete apisixroute <apisixrouter的名字> 或者 kubectl delete -f apisixroute.yaml (删除文件中定义的所有apisixroute)

configmap

==共享k8s更换configmap的操作 ==

  1. kubectl get configmaps -n <namespace>
  2. kubectl delete configmap configmap-config2 -n
  3. 删除application 4.传入新的application 5.kubectl create configmap configmap-config2 --from-file=application.yml -n <namespace> 6. 重启服务

:configmap在pod的yml文件中配置,包括configmap的名称,就是springboot项目中用到的application.yml文件转换的

apiVersion: apps/v1
kind: Deployment
metadata:name: <deployment名称>namespace: <namespace名称>
spec:replicas: 3  <启动的容器的数量,保证高可用>selector:matchLabels:component: test #<是一个列表,用于匹配pod标签,表示deployment应用到那些pod上>template:metadata:labels:component: test  #<和上面的matchLabels.component的值需要保持一致,否则报错>spec:affinity:nodeAffinity: #节点亲和requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions: #选择调度到哪些 AZ- key: topology.kubernetes.io/zoneoperator: Invalues:- suzhou- wuxi#- fenhupodAntiAffinity: #pod 反亲和,控制 pod 起在不同主机requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: component #根据服务标签自行修改好了operator: Invalues:- test-api #根据服务标签自行修改topologyKey: kubernetes.io/hostnametopologySpreadConstraints: #均匀分布,控制 pod 起在不同 AZ- labelSelector:matchLabels:component: test-api #根据服务标签自行修改maxSkew:1maxSkew: 1  topologyKey: topology.kubernetes.io/zonewhenUnsatisfiable: DoNotScheduletolerations: #容忍,允许 pod 调度到 Euler 节点- effect: NoSchedulekey: noderoleoperator: Equalvalue: EulernodeSelector: #选择调度到 Eulernoderole: Euler                      containers:   #一个pod可以定义多个docker容器   使用kubectl describe <pod名称> 可以查看到docker容器的细节信息- name: <容器名称>image: 镜像地址:镜像号  imagePullPolicy: IfNotPresent  #镜像pull策略,Always(总是),Never(总不),IfNotPresent(如果没有就pull) IfNotPresent 本地的k8s没有镜像才去远程pulllifecycle: {}resources:limits:cpu: 500mmemory: 1Girequests:cpu: 500mmemory: 1Giports:- containerPort: 9900volumeMounts:- name: config-volumemountPath: /apps/svr//resourcevolumes:- name: config-volumeconfigMap:name: test-config2   #用于配置本容器应用的configmap
---
apiVersion: v1
kind: Service
metadata:name: <service名称>
spec:selector:component: test #<一个标签,用于匹配deployment标签,表示service应用到那个service中>ports:- protocol: TCPport: 9900 targetPort: 9900        #将容器的9900端口映射到pod的9900端口,可以通过pod的地址+端口访问容器服务#      nodePort: 32698type: ClusterIP     #除了ClusterIP,还有NodePort,LoadBalancer选项      ClusterIP表示只能在k8s集群内部访问,NodePort表示可以再k8s集群以外的地址访问,需要配置额外的参数nodePort,如上注释掉的部分,表示暴露在外的端口,LoadBalancer是负载均衡的方式(我没用过)

apisixroute.yaml文件
apisixroute只关心最后一层转发

apiVersion: apisix.apache.org/v2alpha1
kind: ApisixRoute
metadata:name: <apisix的名称>namespace: <命名空间>
spec:http:- name: <spec的名称>match:hosts:- console.exam.test.internal #转发后的hostpaths:- /exam/console/service/*    #转发后的路径backend:serviceName: <访问的service的名称>servicePort: 9900plugins:- name: proxy-rewriteenable: trueconfig:regex_uri: [ "^/exam/console/service/(.*)", "/exam/$1" ]  #在转发请求之前,Apache APISIX 会使用 proxy-rewrite 插件对请求的 URI 进行重写,将 /exam/console/service/(.*) 重写为 /exam/$1,其中 $1 是原始路径中 /exam/console/service/ 之后的部分。 例子:/exam/console/service/test1/test2 -> /exam/test1/test2

==一个有意思的命令 ==

kubectl explain Deployment.spec.selector 解释Deployment里的spec.selector标签 哪个标签不懂的话就改成哪个标签,会有英文解释


http://www.mrgr.cn/news/66066.html

相关文章:

  • Nessus漏洞扫描
  • 【浏览器学习笔记】-- 浏览器检查jQuery是否加载
  • 【大数据学习 | kafka】简述kafka的消费者consumer
  • 硬件在环仿真建模之电路拓扑建模与数学建模
  • Python 类和对象
  • 天生倔强脸的白纸新人,徐畅演艺生涯初舞台获得肯定!
  • 如何在 uniapp 中实现图形验证码
  • 【日记】吹头发的时候好爆炸(449 字)
  • 《C++类型转换:四种类型转换的规定》
  • 异地组网教程搭建,把内网改为公网
  • 交流负载箱是否有替代品出现?
  • python实现模拟图书管理系统
  • OpenFeign — 远程调用
  • 如何让可交互式(Interactive)Widgets 关联的 App Intent 动态对应于可变内容?
  • 【图神经网络】 AM-GCN代码实战(1)【pytorch】代码可运行
  • 浅析Android Handler机制实现原理
  • Matlab 基于声学超表面的深亚波长厚度完美吸收体
  • 安科瑞EMS3.0开启未来新型电力系统与虚拟电厂聚合商平台交互新征程——安科瑞丁佳雯
  • ElMessageBox 内容自定义
  • 安利一款自己开发的命令行翻译工具。command-fanyi
  • 【热门主题】000029 ECMAScript:现代编程的基石
  • 预测案例2 短剧直播求财如何?
  • gatewayworker 读取laravel框架的配置
  • 靠谱的零代码产平台开发— 应用创建与设置
  • C语言 -- qsort的简单使用
  • 大语言模型可以对数据科学有哪些改变和提升?