Spiga

分类为应用组件的文章

k8s生产部署(五):Redis集群搭建

2021-03-11 18:19:24

摘要:和上文中rabbitMq的搭建过程类似 1、查看可使用的版本 helm repo add aliyuncs https://apphub.aliyuncs.com helm repo update helm repo list helm search repo redis-ha --versions 2、拉去指定版本的配置 helm pull aliyuncs/redis-ha --version=4.3.3 tar -xf redis-ha-4.3.3.tgz tree redis-ha 3、修改storageClass 注意:我们有3台node节点,如果只有2台node节点还需要将replicas值改成2(1主1从) 如果想设置密码,可以跟进说明设置 cat redis-cluster-values.yaml-EOF ## Configure resource requests and limits ## ref: http://kubernetes.io/docs/user-guide/compute-resources/ ## image: repository: redis tag: 5.0.6-alpine pullPolicy: IfNotPresent ## replicas number for each component replicas: 3 ## Kubernetes priorityClass name for the redis-ha-server pod # priorityClassName: ## Custom labels for the redis pod labels: {} ## Pods Service Account ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ serviceAccount: ## Specifies whether a ServiceAccount should be created ## create: true ## The name of the ServiceAccount to use. ## If n…… 阅读全文

k8s生产部署(四):RabbitMq集群搭建

2021-03-10 19:29:38

摘要:1、查看可使用tabbitmq-ha的版本 helm repo add aliyuncs https://apphub.aliyuncs.com helm repo update helm repo list helm search repo rabbitmq-ha --versions 2、拉去指定版本的配置 helm pull aliyuncs/rabbitmq-ha --version=1.33.0 tar -xf rabbitmq-ha-1.33.0.tgz 3、查看文件 tree rabbitmq-ha # 参考 ├── charts # 依赖文件 ├── Chart.yaml # 这个chart的版本信息 ├── templates #模板 │ ├── deployment.yaml │ ├── _helpers.tpl # 自定义的模板或者函数 │ ├── ingress.yaml │ ├── NOTES.txt #这个chart的信息 │ ├── serviceaccount.yaml │ ├── service.yaml │ └── tests │ └── test-connection.yaml └── values.yaml #配置全局变量或者一些参数 4、修改value文件中的StorageClass 负责value文件,重命名为rabbitmq-cluster-values.yaml,并修改如下: ## Data Persistency persistentVolume: enabled: true ## If defined, storageClassName: storageClass ## If set to -, storageClassName: , which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS OpenStack) …… 阅读全文

k8s生产部署(三):安装NFS

2021-03-09 20:23:03

摘要:前提条件,先到腾讯云购买一块cfs 这里加上cfs的ip地址为:172.16.0.8 一、挂载cfs 1. 启动 NFS 客户端 yum install nfs-utils 2. 创建待挂载目标目录 mkdir -p /nfs/ 3. 挂载文件系统 sudo mount -t nfs -o vers=4.0,noresvport 172.16.0.8:/ /nfs 4. 创建k8s文件夹用于存k8s的文件夹 cd ../nfs mkdir k8s #这里加上我们把文件都存储在cfs文件系统下的k8s目录下 二、设置开机自动挂载 第一步挂载cfs虽然成功,但当服务器重启时,要重新执行挂载。因此我们要实现开机自动挂载,这里使用autofs来实现 yum install autofs -y vim /etc/auto.master /nfs /etc/auto.misc vim /etc/auto.misc k8s -rw,soft,intr 172.16.0.8:/k8s systemctl enable autofs 三、配置授权 # 清理rbac授权 kubectl delete -f nfs-rbac.yaml -n kube-system # 编写yaml cat nfs-rbac.yaml-EOF --- kind: ServiceAccount apiVersion: v1 metadata: name: nfs-client-provisioner --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: nfs-client-provisioner-runner rules: - apiGroups: [] resources: [persistentvolumes] verbs: [get, list, watch, create, delete] - apiGroups: [] resources: [persistentvolumeclaims] verbs: [get, list, watch, update] - apiGroups: [storage.k8s.io] …… 阅读全文

k8s生产部署(二):k8s环境搭建2

2021-03-04 13:49:27

摘要:以下都在master节点执行 一、安装Ingress 编辑官方的mandatory.yaml文件,只是在最后加入LimitRange配置,其他保留原始设置 cat mandatory.yaml-EOF apiVersion: v1 kind: Namespace metadata: name: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx --- kind: ConfigMap apiVersion: v1 metadata: name: nginx-configuration namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx --- kind: ConfigMap apiVersion: v1 metadata: name: tcp-services namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx --- kind: ConfigMap apiVersion: v1 metadata: name: udp-services namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx --- apiVersion: v1 kind: ServiceAccount metadata: name: nginx-ingress-serviceaccount namespace: ingress-nginx labels: app.kubernetes.io/name: i…… 阅读全文

k8s生产部署(一):k8s环境搭建1

2021-03-03 18:03:35

摘要:本文介绍k8s集成的搭建过程: 搭建环境:腾讯云centos8.2 服务器4台: master: 172.16.0.2 node1: 172.16.0.3 node2: 172.16.0.4 node3: 172.16.0.5 1.配置服务器名称 分别在每台服务器上设置 hostnamectl --static set-hostname k8s-master hostnamectl --static set-hostname k8s-node1 hostnamectl --static set-hostname k8s-node2 hostnamectl --static set-hostname k8s-node3 以下2-8步骤在所有服务器上运行 2.关闭防火墙 systemctl stop firewalld #防止端口不开发,k8s集群无法启动 systemctl disable firewalld 3.关闭selinux sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 4.关闭swap vim /etc/fstab 永久关闭 注释swap那一行(访问内存分区,k8s无法启动) swapoff -a 临时关闭 free 可以通过这个命令查看swap是否关闭了 5.将桥接的IPV4流量传递到iptables 的链 cat /etc/sysctl.d/k8s.conf EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF #加载模块 modprobe br_netfilter 6.安装Docker及同步时间 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo # 我们安装docker-ce-3:19.03.13-3.el8版本,避免与k8s版本不兼容 yum install -y docker-ce-3:19.03.13-3.el8 systemctl sta…… 阅读全文

[推荐] EntityFrameworkCore

2019-07-24 19:56:36

摘要:基于原始SQL查询创建LINQ查询,代替旧版的FromSql、SqlQuery 基本原生 SQL 查询 在版本.net core 2.0 中,我们引入了一种在依赖关系注入中注册自定义 DbContext 类型的新方法,即以透明形式引入可重用 DbContext 实例的池。 要使用 DbContext 池,请在服务注册期间使用 `AddDbContextPool` 而不是 `AddDbContext`:services.AddDbContextPool<BloggingContext>( options => options.UseSqlServer(connectionString)); 如果使用此方法,那么在控制器请求 DbContext 实例时,我们会首先检查池中有无可用的实例。 请求处理完成后,实例的任何状态都将被重置,并且实例本身会返回池中。 从概念上讲,此方法类似于连接池在 ADO.NET 提供程序中的运行原理,并具有节约 DbContext 实例初始化成本的优势。 阅读全文

微服务架构(二):熔断降级

2018-03-15 20:56:36

摘要:概念------为什么-----如何使用----运行原理------熔断-----降级-----超时------重试----封装 -----consul和polly整合到项目中 首先我们来明确一下,微服务架构的基本单位是微服务,也就主体是微服务----同时每一个微服务都有自己的结构。这些结构组合成了一个微服务(这属于文件夹分层发)这个时候,那么每一个微服务都会出现相同的结构。这个时候很多同学会有疑问,为什么各个微服务之间这些相同的文件不能够进行通用呢,反而会出现这么多冗余。这样做的原因,1、保证微服务的独立性,2、保证微服务的稳定。我举个例子:微服务就好比我们每一个人,我们每一个人就组成了一个社会架构,微服务和这种场景是类似的。大家都知道,每个人的结构都是一样的。如果每个人结构都全部集中到一起。会出现什么问题,大家可以想象一下。全部乱套了。同理,微服务也是一样。所有微服务的第一要务就是保证独立性。所以我这里对微服务采用文件夹分层法。 对于什么时候用程序集分层。先明白一下,每一个微服务都有自己的领域模型(也就是我们昨天说的问题和问题边界)。如果多个微服务之间。存在不得不共享资源,共享资源是不易变化,且变化不影响每一个微服务的逻辑的时候。那么我们就把这通用的逻辑抽取出来,用dll来分层进行引用,例如:微服务之间都需要通信,需要认证,需要限流,负载均衡等等。那么咱们就把这一层称作为工具层。 什么是熔断 熔断就是在被调用端出现宕机,和超时两种情况出现的一种策略应对机制。 熔断就好比保险丝,我们先来看一看保险丝的情况 为什么要使用熔断 服务调用出现异常(包括超时和宕机两种情况) 如果服务连续几次都出现异常,那么就将服务进行熔断一段时间, 服务调用出现异常(包括超时和宕机两种情况) 如果服务连续几次都出现异常,那么就将服务进行熔断一段时间 服务调用出现异常(包括超时和宕机两种情况) 如果服务连续几次都出现异常,那么就将服务进行熔断一段时间 什么是降级 为什么要使用降级 服务主动降级(选择性放弃) 主动将服务进行进行异常返回 服务异常降级 如果服务调用出现超时或者宕机的情况,就按照自定义的策略进行返回。 服务主动降级(选择性放弃) 主动将服务进行进行异常返回 服务异常降级 如果服务调用出现超时或者宕机的情况,就按照自定义的策略进行返回。 服务主动降…… 阅读全文