This commit is contained in:
yinkanglong
2023-08-16 09:00:04 +08:00
parent 0a2309eb9e
commit d27e1bcd99
6 changed files with 91 additions and 69 deletions

View File

@@ -6,7 +6,13 @@ Operator 是由 CoreOS 开发的,用来扩展 Kubernetes API特定的应用
Operator 直接使用 Kubernetes API进行开发也就是说他们可以根据这些控制器内部编写的自定义规则来监控集群、更改 Pods/Services、对正在运行的应用进行扩缩容。
Operator pattern首先由 CoreOS 提出,通过结合 CRD 和 custom controller 将特定应用的运维知识转换为代码实现应用运维的自动化和智能化。Operator 允许 kubernetes 来管理复杂的,有状态的分布式应用程序,并由 kubernetes 对其进行自动化管理例如etcd operator 能够创建并管理一组 etcd 集群, 定制化的 controller 组件了解这些资源,知道如何维护这些特定的应用。
通过 CRDkubernetes 可以动态的添加并管理资源。CRD 解决了结构化数据存储的问题Controller 则用来跟踪这些资源, 保证资源的状态满足期望值。
CRD+Controller=decalartive API声明式 API 设计是 kubernetes 重要的设计思想, 该设计保证能够动态扩展 kubernetes API这种模式也正是 Operator pattern。Operator一般也分为两种类型
* 通用的Operator由各大云厂商开发为了满足统一的云需求。
* 专用型Operator解决一个特定应用的自动化管理。
### 开发框架
@@ -26,71 +32,4 @@ Operator Framework 同样也是 CoreOS 开源的一个用于快速开发 Operato
4. 定义 Operator 的协调reconcile逻辑
5. 使用 Operator SDK 构建并生成 Operator 部署清单文件
## 使用实例
### 搭建go开发环境
1. 下载
```
brew install go
```
2. 配置环境变量
```
GOPATH=
GOROOT=
GOPROXY=
```
3. 安装operator-sdk工具
```
brew install operator-sdk
```
### 创建项目
```
$ operator-sdk new opdemo
......
# 该过程需要科学上网,需要花费很长时间,请耐心等待
......
$ cd opdemo && tree -L 2
.
├── Gopkg.lock
├── Gopkg.toml
├── build
│ ├── Dockerfile
│ ├── _output
│ └── bin
├── cmd
│ └── manager
├── deploy
│ ├── crds
│ ├── operator.yaml
│ ├── role.yaml
│ ├── role_binding.yaml
│ └── service_account.yaml
├── pkg
│ ├── apis
│ └── controller
├── vendor
│ ├── cloud.google.com
│ ├── contrib.go.opencensus.io
│ ├── github.com
│ ├── go.opencensus.io
│ ├── go.uber.org
│ ├── golang.org
│ ├── google.golang.org
│ ├── gopkg.in
│ ├── k8s.io
│ └── sigs.k8s.io
└── version
└── version.go
23 directories, 8 files
```
区有两个成熟的脚手架工具用于简化开发,一个是有 kube-sig 维护的 kubebuilder, 另一个是由 redhat 维护的 operator-sdk这两个工具都是基于 controller-runtime 项目而实现,用户可自行选择,笔者用的是 kubebuilder。

View File

@@ -0,0 +1,68 @@
## 使用实例
### 搭建go开发环境
1. 下载
```
brew install go
```
2. 配置环境变量
```
GOPATH=
GOROOT=
GOPROXY=
```
3. 安装operator-sdk工具
```
brew install operator-sdk
```
### 创建项目
```
$ operator-sdk new opdemo
......
# 该过程需要科学上网,需要花费很长时间,请耐心等待
......
$ cd opdemo && tree -L 2
.
├── Gopkg.lock
├── Gopkg.toml
├── build
│ ├── Dockerfile
│ ├── _output
│ └── bin
├── cmd
│ └── manager
├── deploy
│ ├── crds
│ ├── operator.yaml
│ ├── role.yaml
│ ├── role_binding.yaml
│ └── service_account.yaml
├── pkg
│ ├── apis
│ └── controller
├── vendor
│ ├── cloud.google.com
│ ├── contrib.go.opencensus.io
│ ├── github.com
│ ├── go.opencensus.io
│ ├── go.uber.org
│ ├── golang.org
│ ├── google.golang.org
│ ├── gopkg.in
│ ├── k8s.io
│ └── sigs.k8s.io
└── version
└── version.go
23 directories, 8 files
```

View File

@@ -0,0 +1,13 @@
## 1 概述
### 构建阶段
![](image/2023-08-15-22-02-45.png)
### 工作流程
![](image/2023-08-15-22-05-58.png)
## 2 执行流程

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -10,4 +10,6 @@ find . -name "*.java" -exec wc -l {} \; | awk 'BEGIN{num=0} {num+=$1;print $1;}
# 查看今天的日志
find . -name "*.log" | xargs grep "wrod"
n
# wsl访问宿主机网络
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow