自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

艾希射日

帘外芭蕉惹骤雨门环惹铜绿

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 CKA 认证笔记 - CKA 认证经验帖

文章目录一. 报名 & 预约1. 报名2. 预约二. 考试简介 & 备考建议1. 考纲介绍2. 考官检查事项1. 开启摄像头 & 电脑桌面分享2. 检查办公桌面 & 房间环境3.考试界面简介4. 考试建议【1】准备好 VPN【2】快速浏览题目【3】注意题目要求的上下文【4】启用 kubectl 自动提示【5】提前整理好文档收藏三. 考试题目简记四. 备考资料推荐一. 报名 & 预约1. 报名报名地址为 https://www.cncf.io/certificat

2020-11-06 10:55:28 16680 1

原创 实验:MySQL 客户端SocketTimeout 抓包分析

中间件连接问题,本质上都是 TCP/IP 的通信问题,抓包之下一切无所遁形。做技术当然要对很多具体的知识点做掌握,但更重要的是底层内功的修炼,可以提高自己在不熟悉的问题场景下蹚出一条路的能力。

2024-01-22 21:13:48 1312 1

原创 技术学习周刊第 3 期:Linux& 容器网络扫盲

简单来说,所有的隧道本质上都是在 IP 包里带上另外一个包,这个包可能是另一个 IP 包,也可能是 UDP 或者其他包,传输时通过外层的 IP 做路由,到达目的地后再解析出内部的包在做一次路由。这一篇是非常详细的介绍容器网络,尤其是其提供了在线的 Playground 帮助自己边读边练,手把手创建网桥设备、veth 对,弄 iptables。这些硬核基础知识始终应该是我们学习的重点。周志明老师《凤凰架构》一书中的章节,对容器网络的技术做了整体性的梳理,可以看到上面文章中提到的技术是如何应用在容器网络中的。

2024-01-19 16:12:35 434

原创 技术学习周刊第 2 期

从传统的 HTTPS 加密通信,到云原生架构下零信任网络所要求的 mTLS 双向认证,TLS 协议已经是服务通信的必备要求了。号称一年读完了 MIT 4 年课程的哥们写的另一本书,都是一些优化日常效率的实用小技巧,整本书也就三万多字,1 小时就读完了,可以参考来提升自己的日常效率。关于 TLS 两篇非常好的文章,如果对 TLS 了解不多的话看上面两篇本章就够了。一系列密码学相关的知识,算是对上述两篇文章很好的补充。生命短暂,当然让提高效率,尽可能的去体验、创造才行。

2024-01-14 18:10:08 615

原创 技术学习周刊第 1 期

除了生死,都是擦伤。之前滴滴故障据说就是 K8s 升级跨度过大导致的,K8s 为了解决容器的运维编排而生,但本身的运维又成了令人头大的问题,有种屠龙勇士变恶龙的既视感了。之前学习阅读的很多资料都没有好好沉淀,因此决定恢复之前每周打卡的习惯,参考阮一峰老师的技术爱好者周刊,每周将自己读过的好的文章、资料做整理分享。

2024-01-07 11:31:45 1184

原创 一些有趣的Git学习资料

Git 可以说是程序员必备的技能之一了,基于 Github/Gitlab 以及相关工作流的使用,Git 已经融入到了我们的日常工作中,这里分享一些有趣的 Git 学习资料,希望可以帮助大家更好的理解 Git。

2023-07-16 20:39:35 569

原创 Kubernetes笔记(十) Kubernetes 监控 & 调试

一. Metrics ServerMetrics Server 是 Kubernetes 提供的监控工具,主要用来收集 Node 和 Pod 的 CPU、内存使用情况。其本质就是通过 kube-aggregator 实现的一个 server。图片来自 https://www.jetstack.io/blog/resource-and-custom-metrics-hpa-v2/Kubelet 内置了 cAdvisor 服务运行在每个节点上收集容器的各种资源信息,并对外提供了 API 来查询这些信息。

2022-02-14 21:06:23 2131

原创 Kubernetes笔记(九) Kubernetes 应用封装与扩展

文章目录1. Kustomize2. Helm2.1 应用安装2.2 应用创建3. CRD & Operator3.1 CustomResourceDefinition3.2 创建部署 Operator1. Kustomize当我们需要在 Kubernetes 部署应用时,往往是编写许多 yaml 文件来部署各种资源对象,并且同一个应用针对不同的环境可能需要编写不同的 yaml 文件,这个过程往往非常繁琐。为了解决这个问题 Kubernetes 推出了 Kustomize 工具,官方称为 K

2022-02-14 21:06:12 809

原创 Kubernetes笔记(八) Kubernetes 安全

文章目录1. mTLS2. 认证2.1 ServiceAccount2.2 用户生成私钥与 CSR创建 Certificate Signing Request批准 Certificate Signing Request3. Kubeconfig4. 授权4.1 RBAC4.1.1 Roles & ClusterRoles4.1.2 RoleBinding & ClusterRoleBinding4.1.3 命令行工具5. 准入控制5.1 动态准入控制5.1.1 WebHook Server5

2022-02-14 21:03:21 2549

原创 Kubernetes笔记(七) Kuberetes调度

文章目录1. 手动调度2. NodeSlector3. Node & Pod Affinity4. Resource Request5. Taints & Tolerations6. Pod 驱逐7, 调度过程8. 自定义调度器所谓调度就是按照一系列的需求、规则,将 Pod 调度到合适的 Node 上。下面是 Kubernetes 提供的一些调度方式:1. 手动调度Pod 的定义中有 nodeName 属性,调度器就是在选择出最合适的节点后修改 Pod 的 nodeName 来指定 P

2022-02-14 21:00:46 705

原创 Kubernetes笔记(六) Kubernetes 存储

文章目录1. Volumes2. PV & PVC3. Storage Class4. PV 挂载过程5. CSI 插件操作系统中有 Volume 和 Mount 的概念。Volume: 表示物理存储的逻辑抽象Mount:将外部存储挂载到系统、容器中。为了解决容器的数据存储,Kubernetes 也引入 Volume 的概念。Kubernetes 将 Volume 存储分为了普通的非持久化 Volume 和持久化的 PersistentVolume 两类。1. Volumes普通非持

2022-02-14 21:00:25 781

原创 Kubernetes笔记(五) 配置管理

文章目录1. ConfigMap2. Secret1. ConfigMapConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时可以用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap 可以让配置信息和容器镜像解耦,便于应用配置的修改。每次应用需要修改配置时,只需要修改 ConfigMap 然后按需重启应用 Pod 即可,不用像修改代码那样还需要重新编译打包、制作镜像等操作。Kubernetes 支持基于字面量、文件、目录等方式创建 ConfigMap,下面

2022-02-14 20:59:28 663

原创 Kubernetes笔记(四) Kubernetes 网络

文章目录1. 网络基础知识1.1 Linux Network Stack1.2 Netfilter1.3 Iptables1.4 IPSet2. Kubernetes CNI3. Container To Container4. Pod To Pod4.1 跨主机的网络通信4.2 Flannel UDP4.3 Flannel VXLAN4.4 Flannel host-gw4.5 Calico 路由5. Service To Pod5.1 Service 简介5.2 Service 分类5.2.1 Clus

2022-02-14 20:58:23 1103

原创 Kubernetes笔记(三) 控制器

文章目录1. 副本控制器2. Deployment2.1 基本使用2.2 水平伸缩与升级1) 水平伸缩2) 更新镜像3) 升级策略4) Rollover1) 回滚2) 暂停或继续2.3 Canary Deployment2.4 AutoScaling & HPA3. Job/CrobJob3.1 Job3.2 CronJob4, StatefulSet4.1 Pod 通信4.2 数据存储5. DaemonSet在 Kubernetes 中,Controller 就是那些观察 cluster 状态

2022-02-14 20:57:49 609

原创 Kubernetes笔记(二) Pod 使用简记

1. 为什么需要 PodPods 是 K8s 中最小的可部署和管理单元,是一个逻辑概念。一个 Pod 包含一个或多个 container,它们可以共享网络和存储,可以把 Pod 看作是一个虚拟的逻辑主机,里面包含了一个或多个紧密关联的 container,Pod 同时也告知系统如何去运行它所描述的容器。Pod 的存在主要是为了解决两个问题:对“进程组”的抽象,满足容器共享 namespace 的需求。协同调度容器本身是单进程模型,其应用本身的 PID 为 1,本身没有管理多个进程的能力。在实际

2022-02-14 20:55:39 963

原创 Kubernetes笔记(一) Kubernetes 集群架构

1. Kubernetes 集群架构Kuberetes 本身是由一系列组件组成的容器编排系统,每个组件各司其职从而实现容器的调度、部署以及自动伸缩等功能。Kubernetes 整体的架构图1.1 Master (Control Plane)节点集群中的控制节点,为单数数量,运行集群中的控制面板逻辑的相关组件。kube-system namespace 下的资源都会在这一个或者多个Master 节点上运行,且默认会有node-rule.kubernetes.io/master:NoSchedule

2022-02-10 07:29:34 1287

原创 Nexus 搭建 Maven、Docker 私服详解

一. 安装 Nexus1. 下载并启动2. 修改配置3.纳入 systemd 管理二. Nexus Maven 仓库简介三. 配置从 Nexus 私服拉取库1. 项目中配置2. settings.xml 统一配置3. 配置镜像四. 部署库到 Nexus 私服最近 Java 项目监控需要引入一些 PaaS 团队同学开发的 SDK,为了方便引入于是利用 Nexus 搭建了 Maven 私服,将所需依赖都部署到了私服中供项目使用,简单记录下搭建过程作为梳理与备忘,也希望对需..

2020-11-11 17:01:08 972

原创 修改 K8S 证书默认有效期

通过 kubeadm 创建集群后,其默认生成的证书有效期为 1 年,目测很多同学都遇到过证书过期的坑。之前写了一篇博客 K8S 证书过期后,kubeadm 重新生成证书 介绍如何在过期后重新生成证书。但重新生成后的证书有效期依然只有一年,每年都重新生成一遍的话未免太过麻烦,本篇博客就介绍下如何一劳永逸的解决证书签名有效期的问题。修改默认有效期的方法很简单,其一年的有效期是在源码中写死的,因此我们只需要下载源码将默认有效期修改一下,然后重新编译生成 kubeadm 命令就可以了。这里麻烦的是 K8S 不

2020-08-22 16:42:19 2346

原创 LeetCode 题解 - 02.Add Two Numbers

一. 题目要求You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.You may assume the two numbe

2020-08-15 09:47:27 269

原创 LeetCode 题解 - 01.Two Sum

Leetcode 第 01. Two Sum 题,题目难度 Easy。一. 题目要求Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same element twice

2020-08-14 16:55:34 209

原创 K8S 证书过期后,kubeadm 重新生成证书

K8S 各个组件需要与 api-server 进行通信,通信使用的证书都存放在 /etc/kubernetes/pki 路径下,kubeadm 生成的证书默认有效为 1 年,因此需要定时更新证书,否则证书到期会导致整个集群不可用。本篇文章主要介绍如何通过 kubeadm 重新生成证书。一. 检查证书是否过期。可以通过下面两种方式检查 Kubernetes 的证书是否过期。1. kubeadm 命令查看可以通过 kubeadm alpha certs check-expiration 命令查看相关证

2020-07-20 16:47:29 10463 3

原创 ElasticSearch 父子文档使用简记

一. ES parent-child 文档简介二. 父子文档的索引创建与数据插入ES 父子文档的创建可以分为下面三步:创建索引 Mapping,指明数据类型为 join 与父子文档名插入父文档插入子文档下面针对每一步做演示。1. 创建索引假设我们有一个博客系统,每篇博客下有若干条评论,那么博客 blog 与评论 comment 就构成了一个父子关系。2. 插入父文档3. 插入子文档4. 其他构建多个子文档构建多层父子关系三. 父子文档的查询基于父子文档的查询主要有三种:

2020-06-17 21:27:15 2765

原创 ES 远端集群配置与跨集群搜索

ES 中可以配置远程集群实现跨集群的搜索,极大的提高了 ES 集群的水平扩展性,跨集群搜索也是 ES 认证考试中经常考的知识点。本篇文章简单总结下 ES 远端集群的配置和跨集群搜索作为备忘,也希望对需要的同学有所帮助。一. 配置远端集群为了实现跨集群搜索首先需在当前集群中配置远程集群,我们可以通过下面三种方式配置:1. 配置文件设置首先可以在 ElasticSearch 的 yml 配置文件中设置,ES 启动时就会建立与远端集群的链接,配置如下:cluster: remote: clu

2020-06-15 16:22:27 2147 4

原创 LeetCode 题解-513.找树左下角的值

LeetCode 第 513. Find Bottom Left Tree Value题,题目难度 Medium。一. 题目要求给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 可以假设树(即给定的根节点)不为 NULL。

2020-06-01 10:57:37 228

原创 LeetCode 题解 - 102. 二叉树的层序遍历

LeetCode 第 102. Binary Tree Level Order Traversal 题,题目难度 Medium,一. 题目要求给定一个二叉树,返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]二. 解题思路 & 代码实现一道

2020-05-25 21:33:01 197

原创 LeetCode 题解 - 92. 反转链表 II

Leetcode 第 92. Reverse Linked List II 题,题目难度 Medium。一. 题目要求反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL本题是 206.反转链表 的进阶版,要求反转指定范围内的部分链表。实现思路如下:找到索

2020-05-25 16:10:44 352

原创 LeetCode 题解 - 82. 删除排序链表中的重复元素 II

Leetcode 第 82. Remove Duplicates from Sorted List II 题,题目难度 Medium。一. 题目要求给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3二. 解题思路 & 代码实现和

2020-05-25 11:43:57 324

原创 LeetCode 题解 - 83.删除排序链表中的重复元素

Leetcode 第 83. Remove Duplicates from Sorted List 题,题目难度 Easy。一.题目要求给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3二. 解题思路 & 代码基本思路就是遍历整个链表,然后对每一个 Node 的 value 进行判断。解法 1

2020-05-24 20:08:47 195

原创 LeetCode 题解 -173.二叉搜索树迭代器

Leetcode 第 173. Binary Search Tree Iterator 题,题目难度 Medium。一. 题目要求实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:BSTIterator iterator = new BSTIterator(root);iterator.next(); // 返回 3iterator.next(); // 返回 7iterator.hasNext()

2020-05-22 08:04:28 274

原创 LeetCode 题解 -100.相同的树

LeetCode 100.Same Tree 题,难度为 East。一. 题目要求给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1

2020-05-21 18:43:28 197

原创 LeetCode 题解 - 337. House Robber III

title: LeetCode-337. House Robber III-简记date: 2019-07-23tags: [“LeetCode”, “动态规划”]categories: [“LeetCode”]LeetCode 第 337. House Robber III,题目难度 Medium。一. 题目要求题目概要如下:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之.

2020-05-19 19:11:56 307

原创 LeetCode 题解 - 213. House Robber II

LeetCode 第 213. House Robber II,题目难度 Medium。一. 题目要求你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能先偷

2020-05-19 19:11:16 354

原创 LeetCode 题解 -198.House Robber

LeetCode 第 198. House Robber(打家劫舍),题目难度 Easy。一. 题目要求你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3

2020-05-13 16:53:47 317

原创 Java 手动资源关闭最佳实践

最近做了一些文件上传下载的工作,有涉及到资源关闭相关的操作,因此回顾整理了下 JDK 的 try-with-resrouces 资源回收方式,希望对需要的同学有所帮助,如有不足也非常欢迎交流改进。一. 为何需要资源关闭对于某些资源,比如 IO 流对象、Socket 套接字、数据库连接等对象,如果在使用后不手动关闭,会导致资源一直被占用,最终造成资源紧张,导致严重的性能问题。因此在使用完成后务必要将这类资源关闭。二. 传统 try-finally 资源关闭方式在 Java 7 之前 JDK 提供了

2020-05-10 09:30:21 576

原创 服务器常用软件一键安装脚本

最近倒腾了几台云服务器自己玩,每次新开服务器都要把一些常用的工具比如 git、zsh、docker 重新安装一遍非常麻烦,于是把相关命令加到了脚本里,以后新开服务器直接执行脚本就行了,省时省力。#!/bin/sh# 安装 gitsudo apt-get updatesudo apt-get install git -y# 安装并修改 zshsudo apt-get updatesudo apt-get install zsh -ychsh -s /bin/zshwget https:/

2020-05-08 21:35:02 991

翻译 Kubernetes 150 个操作练习 (下)

150 个练习的最后一部分,这部分主要包含三个模块:状态存储配置监控服务与网络四. 状态存储篇这部分的练习主要是熟悉持久卷和持久卷声明的相关使用。96. 查看集群中的所有持久卷$ kubectl get pvNAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM ...

2020-04-28 09:09:17 1485

原创 LeetCode 题解 - 206.反转链表

今天做 LeetCode LeetCode 解题报告-206.反转链表,难度为 Easy。一. 题目要求反转一个单向链表例子Input: 1->2->3->4->5->NULLOutput: 5->4->3->2->1->NULL二. 解题思路 & 代码解题的关键也是理清楚每次反转的节点指针变化,每次反转涉及到三...

2020-04-27 21:58:53 321

翻译 Kubernetes 150 个操作练习 (中)

原文链接:Practice Enough With These 150 Questions for the CKAD Exam。Medium 上的一篇文章记录了 150 个 Kubernetes 的练习,自己练习了一遍,在原文基础上加了一些自己实践过程中的的提示,希望对需要熟悉 K8S 操作的同学有所帮助。本篇介绍 Pod 设计相关的 练习。三.Pod 设计篇这是原文中的第三部分,主要关于 ...

2020-04-27 09:54:42 1392

翻译 Kubernetes 150 个操作练习 (上)

title: “Kubernetes 150 个操作练习(上)”date: 2020-04-23T15:50:53+08:00draft: falsetags: [“Kubernetes”]description: [“Kubernetes”]原文链接:Practice Enough With These 150 Questions for the CKAD Exam。看了 Medi...

2020-04-25 15:57:11 3646 17

原创 LeetCode 题解 - 24.两两交换链表中的节点

今天做 LeetCode 24.两两交换链表中的节点,难度为 Medium。一. 题目要求给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:Given 1->2->3->4, you should return the list as 2->1->4->3.二. 解题思路 & 代码这道题难点在于搞清楚反转过程中节点指针的变化...

2020-04-25 10:02:17 238

我是一只IT小小鸟(全本3).

这是一本属于程序员的书,讲述了成为一个优秀程序员的历程

2021-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除