不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

为什么要懂复杂度分析

我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?

你可能会有些疑惑,我把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大小。为什么还要做时间、空间复杂度分析呢?这种分析方法能比我实实在在跑一遍得到的数据更准确吗?

首先,我可以肯定地说,你这种评估算法执行效率的方法是正确的。很多数据结构和算法书籍还给这种方法起了一个名字,叫事后统计法。但是,这种统计方法有非常大的局限性。

    1. 测试结果非常依赖测试环境
    1. 测试结果受数据规模的影响很大
阅读全文 »

崩溃的边缘

前天晚上,我使用我的电脑准备更新一下博客内容,结果发现报错:Ignoring local @import of "font-embedded.css,网上查了下,说是要更新Next版本到最新即可。

因此,痛定思痛,决定先整我的博客。

准备阶段

阅读全文 »

世间的本质,用眼睛是看不到的,那一刻我才明白这句话的真正含义。我是个盲人,但那又如何呢,世界不会因为我看不到而不再美丽;我不是侠岚,但那又怎样呢,我手中有属于我自己的侠岚印。 ——《风语咒》

十年之约,已走过十分之一。

这一年,你是否离自己的目标更近了一些,是否摆脱了内心的桎梏,重获新生?

三月的春风

三月,你意气风发,自信满满,觉得未来前途一切光明,朋友L交代给你的事情,你觉得百分百可以搞定。

阅读全文 »

join:将node加入集群

  • join前检查
  • discovery-token-ca-cert-hash:用于Node验证Master身份
  • token:用于Master验证Node身份

kubeadm init流程

  • 1,引导前的检查
  • 2,生成私钥和数字证书
  • 3,生成控制平面组件kubeconfig文件
  • 4,生成控制平面组件manifest文件
  • 5,下载镜像,等待控制平面启动
  • 6,保存MasterConfiguration
  • 7,设定Master标志
  • 8,进行基于TLS的安全引导相关配置
  • 9,安装DNS和kube-proxy插件

引导前检查

kubeadm init pre-flight check:

  • kubeadm版本与要安装的kubernetes版本的比对检查
  • kubernetes安装的系统需求检查
  • 其他检查:用户、主机、端口、swap、工具等
阅读全文 »

传统弹性伸缩的困境

从传统意义上,弹性伸缩主要解决的问题是容量规划与实践负载的矛盾。

蓝色水位线表示集群资源容量随着负载的增加不断扩容,红色曲线表示集群资源实际负载变化。

弹性伸缩就是要解决当实际负载增大,而集群资源容量没来得及反应的问题。

阅读全文 »

网络基础知识

公司网络架构

  • 路由器:网络出口
  • 核心层:主要完成数据高效转发、链路备份等
  • 汇聚层:网络策略、安全、工作站交换机的接入、VLAN之间通信等功能
  • 接入层:工作站的接入

交换技术

阅读全文 »

Kubernetes架构

  • Master:负责集群的管理
  • Node:计算节点,负责跑任务
  • kubelet:相当于master的agent
  • kube-proxy:网络
  • Docker Engine:运行管理容器
  • Etcd Cluster:存储k8s的数据

环境准备

阅读全文 »

快速搭建一个Kubernetes集群

kubectl命令行管理工具

基础命令

命令 描述
create 通过文件名或标准输入创建资源
expose 将一个资源公开为一个新的Service
run 在集群中运行一个特定的镜像
set 在对象上设置特定的功能
get 显示一个或多个资源
explain 文档参考资料
edit 使用默认的编辑器编辑一个资源
delete 通过文件名、标准输入、资源名称或标签选择器来删除资源
阅读全文 »

Docker介绍与安装

Docker是什么

  • 使用最广泛的开源容器引擎
  • 一种操作系统级的虚拟化技术
  • 依赖于Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
  • 一个简单的应用程序打包工具

Docker设计目标

  • 提供简单的应用程序打包工具
  • 开发人员和运维人员职责逻辑分离
  • 多环境保持一致性
阅读全文 »