kube-state-metrics
kube-state-metrics.yaml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 ...
logstash
logstash.yaml1234567891011121314151617181920212223242526272829303132333435kind: DeploymentapiVersion: apps/v1metadata: name: logstash-ingress-logs namespace: logstashspec: replicas: 1 selector: matchLabels: app: logstash-ingress-logs template: metadata: labels: app: logstash-ingress-logs spec: volumes: - name: logstash-ingress-logs-conf configMap: name: logstash-ingress-logs-conf defaultMode: 420 containers: - ...
metrics-server
metrics-server.yaml1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961 ...
node-exporter
node-exporter.yaml1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162apiVersion: apps/v1kind: DaemonSetmetadata: name: node-exporter namespace: monitor labels: name: node-exporterspec: selector: matchLabels: name: node-exporter template: metadata: labels: name: node-exporter spec: hostPID: true hostIPC: true hostNetwork: true containers: - name: node-exporter image: r ...
prometheus
prometheus.yaml123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: prometheusrules:- apiGroups: [""] resources: - nodes - nodes/proxy - services - endpoints - pods verbs: ["get", "list", "watch"]- apiGroups: - e ...
Django RestFramework 使用router生成路由
django使用的是模块化结构,每个app都可以独立拆分,那么注册路由的时候也可以灵活一点, 使用drf框架提供的router来自动生成路由
应用级 urls.py
12345678910111213from django.urls import path, includefrom rest_framework import routersfrom app01 import viewsrouter = routers.DefaultRouter()router.register(r'groups', views.GroupViewSet)router.register(r'students', views.StudentViewSet)urlpatterns = [ path('/', include(router.urls)),]
这里path路径是/, 引用了router, router注册了两个路由, 分别是 groups 和 students, 生成的api路径就是 /groups/ 和 /stude ...
使用kubectl进行多集群管理
平常使用跳板机来管理, 经常多个环境多套集群, 那么如何用一个kubectl如何管理这些集群.
使用不同的kubeconfig管理使用不同的Linux用户每个Linux用户的 ~/.kube/config 配置不同即可, 比如创建一个uat用户,一个prod用户, 分别配置不同的config文件
使用环境变量config文件放到当前目录下
1KUBECONFIG=config-uat kubectl get pod
环境变量也可以写成全局的在.bashrc里面
1export KUBECONFIG=config-uat
使用参数同使用环境变量
1kubectl get pod --kubeconfig=config-uat
使用一个kubeconfig准备确保每个kubeconfig里面部分参数唯一性,可以手动修改一下
合并配置文件假设一个配置文件名为: uat, 另一个为: prod
1KUBECONFIG=uat:prod kubectl config view --flatten > merged-kubeconfig
验证合并结果完成合并后,可以使用以下命令验证 ...
Kubernetes使用存储挂载单个文件
一般来说, 挂载存储都是把一个PV挂载到一个路径, 挂载后此路径下原来的文件就会不见, 只能看到挂载后的文件, 和在Linux下挂载磁盘是一样的. 那么现在有个需求:
需求此服务是java程序, 数据库使用的是内嵌的h2 database, 下图中的两个文件就是数据库的文件. 这两个文件是存在于根目录下的, 假设此程序数据库文件是代码写死的(真实情况是: 数据库路径是可以更改的), 现在要部署到kubernetes中, 并对数据库做持久化.
使用subpath根据之前挂载configmap到单个文件的经验, 我们应该使用subpath来挂载, 先创建好pvc, yml如下
1234567891011apiVersion: v1kind: PersistentVolumeClaimmetadata: name: metabase-pvcspec: storageClassName: managed-nfs-storage accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
st ...
使用kubeadm部署一套高可用k8s 1.26集群 for AlmaLinux9
基于AlmaLinux9使用kubeadm搭建集群, ubuntu部署文档, 有疑问的地方可以看官方文档
准备机器
我的机器详情如下, 配置至少为4C4G
hostname
IP
作用
public
10.0.0.3
ingress和apiserver的负载均衡,nfs存储
master1
10.0.0.11
k8s master节点
master2
10.0.0.12
k8s master节点
master3
10.0.0.13
k8s master节点
worker1
10.0.0.21
k8s worker节点
worker2
10.0.0.22
k8s worker节点
每台机器都做域名解析,或者绑定hosts(直接使用ip地址会有警告)
123456vim /etc/hosts10.0.0.3 public kube-apiserver10.0.0.11 master110.0.0.12 master210.0.0.13 master3
每台机器都关闭防火墙和SELinux
负载均衡机器必须要关闭,因为6443不是nginx的标 ...
前后端跨域问题
啥是跨域跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。
跨源 HTTP 请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。
出于安全性,浏览器限制脚本内发起的跨源 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。
为什么会跨域说到跨域不得不谈的就是浏览器的同源策略,跨域也是因为浏览器这个机制引起的,这个机制的存 ...