置顶文章

48k44 分钟

# ELK 收集 Kubernetes 组件日志分析与实践 # 一、ELK 创建 Namespace 和 Secrets # kubectl create ns logging # kubectl create secret docker-registry harbor-admin -n logging --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=xyapples@163.com --docker-password=passwd # 二、交付 Zookeeper 集群至
12k11 分钟

# Kubenetes 部署 Rabbitmq 集群 # 1. 创建 RBAC 权限 # cat 01-rabbitmq-rbac.yaml apiVersion: v1 kind: ServiceAccount metadata: name: rabbitmq-cluster namespace: prod --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: rabbitmq-cluster namespace: prod rules: - apiGroups: [&quo
5.6k5 分钟

# Rabbitmq 集群部署 # 一、环境配置 # 1.1 关闭防火墙、Selinux systemctl disable --now firewalld setenforce 0 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #
67k1:01

# 消费租赁项目 Kubernetes 基于 ELK 日志分析与实践 # 一、ELK 创建 Namespace 和 Secrets # kubectl create ns logging # kubectl create secret docker-registry harbor-admin -n logging --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=xyapples@163.com --docker-password=passwd # 二、交付 Zookeepe
82k1:15

# 消费租赁系统微服务应用交付实践 # 一、部署中间件 # 1.1 部署 MySQL # 1.1.1 MySQL-ConfigMap [root@k8s-master01 01-nf-flms-mysql]# cat 01-mysql-cm.yaml apiVersion: v1 kind: ConfigMap metadata: name: mysql-cm namespace: prod data: my.cnf: |- [mysqld] #performance setttings lock_wait_timeout = 3600
5.7k5 分钟

# Containerd 常用命令 # 1. 安装 Containerd 1.1 配置安装源 yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 1.2 安装 docker-ce、containerd
17k15 分钟

# Redis Cluster 集群部署 # 1、环境配置 # 1.1 关闭防火墙、Selinux systemctl disable --now firewalld setenforce 0 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/conf
36k33 分钟

# 1. Ingress Nginx Controller 安装 Supported Ingress-NGINX version k8s supported version Alpine Version Nginx Version Helm Chart Version 🔄 v1.12.1 1.32, 1.31, 1.30, 1.29, 1.28 3.21.3 1.25.5 4.12.1 🔄 v1.12.0 1.32, 1.31, 1.30, 1.29, 1.28 3.21.0 1.25.5 4.12.0 🔄 v1.12.0-beta.0 1.32, 1.31, 1.
2.3k2 分钟

# 阿里云 + github 构建镜像仓库解决 k8s.gcr.io 访问 由于 k8s.gcr.io/ 镜像仓库位于国外,国内使用 kubeadm 构建 docker 集群时无法访问相应的 docker 镜像。 # 1. 登录 Github 创建仓库 # 2. 创建 Dockerfile 仓库下面创建一个 Dockerfile,以 ingress-nginx-controller 为例下的 dockerfile 内容如下: [root@manager ~]# mkdir ingress-nginx-controller [root@manager ~]# cd ingress-
35k32 分钟

# K8S 云原生存储 Rook-Ceph # 1. StorageClass 动态存储 StorageClass:存储类,由 K8s 管理员创建,用于动态 PV 的管理,可以链接至不同的后端存储,比如 Ceph、GlusterFS 等。之后对存储的请求可以指向 StorageClass,然后 StorageClass 会自动的创建、删除 PV。 实现方式: in-tree: 内置于 K8s 核心代码,对于存储的管理,都需要编写相应的代码。 out-of-tree:由存储厂商提供一个驱动(CSI 或 Flex Volume),安装到 K8s 集群,然后 StorageClass 只需要配置该
5.9k5 分钟

# K8S 持久化存储 NFS+StorageClass # 1. 搭建 NFS 服务器 #所有K8S节点安装nfs-utils [root@k8s-node02 ~]# yum install nfs-utils -y #K8S-node02节点配置nfs服务 [root@k8s-node02 ~]# mkdir /data/nfs -p [root@k8s-node02 ~]# cat /etc/exports /data/nfs 192.168.1.0/24(rw,no_root_squash) [root@
4.9k4 分钟

# K8s 细粒度权限控制 RBAC # 1. 创建不同权限的 clusterrole # 1.1 命令空间只读 namespace-readonly # cat namespace-readonly.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: namespace-readonly rules: - apiGroups: - "" resources: - namespaces verbs: - get - list
12k11 分钟

# K8s 准入控制 ResourceQuota、LimitRange、QoS 服务质量 # 1. ResourceQuota 配置解析 ResourceQuotas 实现资源配额,避免过度创建资源,针对 namespace 进行限制。cpu 内存则是根据 pod 配置的 resources 总额进行限制,如果没有配置 resources 参数则无法限制。 apiVersion: v1 kind: ResourceQuota metadata: name: resourcequota-test namespace: test labels: app: resourcequo
19k17 分钟

# K8s 亲和力 Affinity Pod 和节点之间的关系: 某些 Pod 优先选择有 ssd=true 标签的节点,如果没有在考虑部署到其它节点; 某些 Pod 需要部署在 ssd=true 和 type=physical 的节点上,但是优先部署在 ssd=true 的节点上。 Pod 和 Pod 之间的关系: 同一个应用的 Pod 不同的副本或者同一个项目的应用尽量或必须不部署在同一个节点或者符合某个标签的一类节点上或者不同的区域; 相互依赖的两个 Pod 尽量或必须部署在同一个节点上或者同一个域内。 # 1. Affinity 分类
3.7k3 分钟

# K8s 容忍和污点 Taint 指定服务器上打上污点,让不能容忍这个污点的 Pod 不能部署在打了污点的服务器上。Toleration 是让 Pod 容忍节点上配置的污点,可以让一些需要特殊配置的 Pod 能够调用到具有污点和特殊配置的节点上。 # 1. Taint 配置解析 #1.Taint语法 # kubectl taint nodes NODE_NAME TAINT_KEY=TAINT_VALUE:EFFECT #2.创建Taint示例 # kubectl taint nodes k8s-node01 ssd=true:PreferNoSchedule #3.
3k3 分钟

# K8s 初始化容器、临时容器 # 1. 初始化容器 # 1. 1 初始化容器的用途 初始化容器主要是在主应用启动之前,做一些初始化的操作,比如创建文件、修改内核参数、等待依赖程序启动或其他需要在主程序启动之前需要做的工作。 Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码; Init 容器可以安全地运行这些工具,避免这些工具导致应用镜像的安全性降低; Init 容器可以以 root 身份运行,执行一些高权限命令; Init 容器相关操作执行完成以后即退出,不会给业务容器带来安全隐患。 # 1.2 初始化容器和 PostStart 区别 PostStart:依赖
2.9k3 分钟

# K8s 计划任务 Job、Cronjob # 1. Job 配置参数详解 # cat job.yaml apiVersion: batch/v1 kind: Job metadata: labels: job-name: echo name: echo namespace: default spec: #suspend: true # 1.21+ #ttlSecondsAfterFinished: 100 backoffLimit: 4 completions: 1 parallelism: 1 template: spec:
10k9 分钟

# K8s 持久化存储 # 1. Volume Container(容器)中的磁盘文件是短暂的,当容器崩溃时,kubelet 会重新启动容器,Container 会以最干净的状态启动,最初的文件将丢失。另外,当一个 Pod 运行多个 Container 时,各个容器可能需要共享一些文件。Kubernetes Volume 可以解决这两个问题。 一些需要持久化数据的程序才会用到 Volumes,或者一些需要共享数据的容器需要 volumes。 日志收集的需求需要在应用程序的容器里面加一个 sidecar,这个容器是一个收集日志的容器,比如 filebeat,它通过 volumes 共享应用程序
11k10 分钟

# K8s 配置管理 Configmap # 1. Configmap # 1. 1 基于 from-env-file 创建 Configmap # cat cm_env.conf podname=nf-flms-system podip=192.168.1.100 env=prod nacosaddr=nacos.svc.cluster.local #kubectl create cm cmenv --from-env-file=./cm_env.conf # 1.2 基于 from-literal 创建 Configmap
2.5k2 分钟

# K8s 服务发布 Service # 1. Service 类型 Kubernetes Service Type(服务类型)主要包括以下几种: ClusterIP:在集群内部使用,默认值,只能从集群中访问。 NodePort:在所有安装了 Kube-Proxy 的节点上打开一个端口,此端口可以代理至后端 Pod,可以通过 NodePort 从集群外部访问集群内的服务,格式为 NodeIP:NodePort。 LoadBalancer:使用云提供商的负载均衡器公开服务,成本较高。 ExternalName:通过返回定义的 CNAME 别名,没有设置任何类型的代理,需要 1.7 或更高版本
19k17 分钟

# K8s 资源调度 deployment、statefulset、daemonset # 1. 无状态应用管理 Deployment [root@k8s-master01 ~]# cat nginx-deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy labels: app: nginx-deploy annotations: app: nginx-deploy namespace: default spec: selector: m
6.9k6 分钟

# K8s 零宕机服务发布 - 探针 # 1. Pod 状态及 Pod 故障排查命令 状态 说明 Pending(挂起) Pod 已被 Kubernetes 系统接收,但仍有一个或多个容器未被创建,可以通过 kubectl describe 查看处于 Pending 状态的原因 Running(运行中) Pod 已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行状态,或者是正在启动或者重启,可以通过 kubectl logs 查看 Pod 的日志 Succeeded(成功) 所有容器执行成功并终止,并且不会再次重启,可以通过 kubectl logs
4961 分钟

# 一键永久激活 Window、office 教程 1、按下 Win 键 + R,调出运行对话框,输入 powershell 并回车,启动命令提示符窗口。接着输入以下指令执行激活: irm https://get.activated.win | iex 该脚本包含四个功能:首个命令用于 Windows 系统永久激活,第二个用于 Office 永久激活,第三个将系统有效期延长至 2038 年,第四个则实现每 180 天自动循环激活。 2. 我们再次使用 Windows 徽标 + R 快捷键打开运行框,输入 slmgr.vbs/xpr 就可以看到系统已经永久激活
55k50 分钟

# 二进制高可用安装 K8s 集群 # 1. 基本配置 # 1.1 基本环境配置 主机名 IP 地址 说明 k8s-master01 ~ 03 192.168.1.71 ~ 73 master 节点 * 3 / 192.168.1.70 keepalived 虚拟 IP(不占用机器) k8s-node01 ~ 02 192.168.1.74/75 worker 节点 * 2 请统一替换这些网段,Pod 网段和 service 和宿主机网段不要重复!!! * 配置信息 * 备注 系统版本 Rocky Linux 8/9
55k50 分钟

# MySQL 运维 DBA 应用与实践 # 1. 日志 在任何一种数据库中,都会有各种各样的日志,这些日志记录了数据库运行的各个方面。可以帮助数据库管理员追踪数据库曾经发生的一些事情。 对于 MySQL 数据库,提供了四种不同的日志帮助我们追踪。 错误日志 二进制日志 查询日志 慢查询日志 # 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld (MySQL 服务) 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录 /
18k16 分钟

# Redis 集群(主从 + 哨兵)模式 # 一、什么是 redis 主从复制? 主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点 (master),后者称为从节点 (slave), 数据的复制是单向的,只能由主节点到从节点。master 以写为主,slave 以读为主。 # 二、主从复制的作用 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供
32k29 分钟

# Kubeadm 高可用安装 K8s 集群 # 1. 基本配置 # 1.1 基本环境配置 主机名 IP 地址 说明 k8s-master01 ~ 03 192.168.1.71 ~ 73 master 节点 * 3 / 192.168.1.70 keepalived 虚拟 IP(不占用机器) k8s-node01 ~ 02 192.168.1.74/75 worker 节点 * 2 请统一替换这些网段,Pod 网段和 service 和宿主机网段不要重复!!! * 配置信息 * 备注 系统版本 Rocky Linux 8/
16k14 分钟

# Rsync 服务实践 环境准备 主机名 IP 角色 server 192.168.40.101 rsync 服务端 client 192.168.40.102 rsync 客户 # 1.rsync 服务端 # 1.1 关闭防火墙、selinux [root@localhost ~]# hostnamectl set-hostname backup [root@localhost ~]# bash [root@backup ~]# hostnamectl set-hostname aizj_lb01 [root@backup ~]# systemctl stop fi
3.9k4 分钟

# 企业级私有仓库 Harbor 企业部署 Kuberetes 集群环境之后,我们就可以将原来在传统虚拟机上运行的业务,迁移到 kubernetes 上,让 Kubernetes 通过容器的方式来管理。而一旦我们需要将传统业务使用容器的方式运行起来,就需要构建很多镜像,那么这些镜像就需要有一个专门的位置存储起来,为我们提供镜像上传和镜像下载等功能。但我们不能使用阿里云或者 Dockerhub 等仓库,首先拉取速度比较慢,其次镜像的安全性无法保证,所以就需要部署一个私有的镜像仓库来管理这些容器镜像。同时该仓库还需要提供高可用功能,确保随时都能上传和下载可用的容器镜像。 # 1、关闭防火墙、Sel