Funky's NoteBook

Funky's NoteBook

it's better to burn out than to fade away

Install K8S dashboard with ingress
安装 kubernetes dashboard(仪表盘)同时开启 ingressKubernetes Dashboard是Kubernetes集群的基于Web的通用UI。 它允许用户管理在群集中运行的应用程序并对其进行故障排除,以及管理群集本身。 Step1: 为 dashboard 创建 service account我们创建一个命名空间在 kube-system 中, 名为 kubernetes-dashboard 的 Service Account: 12345apiVersion: v1kind: ServiceAccountmetadata: name: kubernetes...
Install a single master K8S cluster with kubeadm
Prestep: 使用 kubdeadm 安装 K8S 前每个节点: 关闭swap 关闭selinux 关闭防火墙 集群里的每个节点的/etc/hosts都要有所有节点ip和与其对应的hostname docker安装完毕 让系统内核开启网络转发 关闭 Swap(每个节点)12swapoff -a &>/dev/nullsed -i '/\s\+swap\s\+/d' /etc/fstab &>/dev/null 关闭 Selinux(每个节点)1234567891011121314setenforce 0 cat > /etc/selinux...
Go Core Dev Interface
接口接口是一个编程规约,一组方法签名的组合。接口是没有具体实现的逻辑,不能定义字段 变量和实例 实例里蕴含了变量值、变量类型和附着在类型上的方法等语义。实例和面向对象编程中的对象改了类似,我们使用实例来代表具体类型的变量,接口变量只有值和类型的概念,所有接口类型变量仍然称为接口变量,接口内部存放的具体类型变量被称为接口指向的实例。接口只有声明没有实现,所有定义一个新接口,通常又变成声明一个新接口,定义接口和声明接口两者代表相同的意思。 空接口 最常使用的接口字面量类型就是空接口 interface{} ,由于空接口的方法集为空,所以任意类型都被认为实现了空接口,任意类型的实例都可...
Go Core Dev Type-System
类型系统命名类型 & 未命名类型1234567891011121314151617181920package mainimport "fmt"type Person struct { name string age int}func main() { // 使用 struct 字面量声明的是未命名类型 a := struct { name string age int }{"andes", 18} fmt.Printf("%T\n", a) ...
Go Core Dev Function
函数 声明格式 123func funcName(param-list)(result-list){ function body} 特点 可以无传入参数和返回值(默认返回0) 123456789func A() { //do something}func A() int { // do something ... return 1} 多个相邻的相同类型的参数可以使用简写模式 123func add(a, b int) int { return a + b} 支持有名...
Go Core Dev Base
基础知识常量预声明标识符 iota 用在常量声明中,其初始值为 0。一组多个常量同时声明时其值逐行增加,iota 可以看做是自增枚举变量,专门用来初始化常量。 123456789101112131415161718192021222324252627// 类似枚举的 iotaconst ( c0 = iota // 0 c1 = iota // 1 c3 = iota // 2)//简写const ( c0 = iota // 0 c1 // 1 c2 // 2)//注意 iota 逐行增加const ( a == 1 << iota // 1 ...
Go Primer
包每个 Go 程序都是由包构成的。 程序从 main 包开始运行。 本程序通过导入路径 "fmt" 和 "math/rand" 来使用这两个包。 按照约定,包名与导入路径的最后一个元素一致。例如,"math/rand" 包中的源码均以 package rand 语句开始。 注意: 此程序的运行环境是固定的,因此 rand.Intn 总是会返回相同的数字。 (要得到不同的数字,需为生成器提供不同的种子数,参见rand.Seed。 练习场中的时间为常量,因此你需要用其它的值作为种子数。) 12345678910package mai...
Kubernetes StatefulSet
Kubernetes StatefulSetStatefulSet 是用来管理有状态应用的工作负载 API 对象。 StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证。 和 Deployment 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个固定的 ID。这些 Pod 是基于相同的声明来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。 StatefulSet 和其他控制器...
How to contribute to open source projects
如何贡献开源项目最近看见很多同学遇到这个问题,今天总结下为热爱开源社区并愿意为开源项目贡献的同学提供思路。 那么下面我们简单的聊聊如何贡献开源项目。 贡献之前了解项目在贡献开源项目之前首先你要了解你想要贡献的开源项目,这是必须的,不然容易闹出意想不到的笑话,GitHub本身也是个国际交流的平台,我们作为国人也要谨言慎行,维护我们的良好形象。很多高质量的大项目都有他们的贡献注意事项,一定要仔细查看,特别是当你贡献文档类型的项目时,一定要注意文档的约定和术语表的使用以及格式段落用法。 提高自己的英语水平在 Github 上面,无论是和外国人还是中国人交流,统一使用英语。除非你明确知道这个项目...
Views about Namespace & Cgroups of Linux Kernel
浅谈 Linux 内核中的 Namespace 与 Cgroups我是在学习 Docker 的时候接触的这两个概念,这两个内核功能也贯穿整个 Docker 容器的运作。那么我们下面简单的谈一谈这两个概念。本章使用自己开发的donkey runtime 与 docker 同步做对比。 NamespaceNamespace 也叫命名空间,是 Linux kernel 的一个功能,以下简称NS,他可以隔离一系列的系统资源,比如 PID、UserID、Network等。在 Docker 中,NS 更多的用于做系统的隔离,比如让不同的用户只能访问自己的服务,让每个容器在自己的 root 的环境下运...
avatar
Linus Lee
Coding everything.