Skip to content

Commit

Permalink
Merge pull request #26 from learner-pm/dev
Browse files Browse the repository at this point in the history
feat: 增加demo内容
  • Loading branch information
learner-pm authored May 18, 2024
2 parents 5e3f41b + 1425722 commit 5c7e441
Show file tree
Hide file tree
Showing 11 changed files with 3,173 additions and 4,140 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ dist
.github
.husky
code
example
helm
lint
93 changes: 93 additions & 0 deletions docs/program/Kuberentes/demoOne.md
Original file line number Diff line number Diff line change
Expand Up @@ -385,3 +385,96 @@ COPY nginx.conf /etc/nginx/nginx.conf
然后进行前端服务的构建、上传、重建pod等操作,如果顺利,在页面上点击按钮即可显示用户名称。

相比于直接修改api的方式,这种反向代理的方式比较稳定,优雅。

## 使用 Ingress

通过`Ingress`来进行服务的访问,不直接访问前端服务的地址

编写如下文件,主要是使用前后端Service

1、前端服务 (node-frontend-app):

- URL: http://node.backend/
- 服务: node-frontend-app
- 端口: 8884

2、后端服务 (node-backend):

- URL: http://node.backend/backend
- 服务: node-backend
- 端口: 8448

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: node-backend-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: node.backend
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: node-frontend-app
port:
number: 8884
- path: /backend
pathType: Prefix
backend:
service:
name: node-backend
port:
number: 8448
```

执行文件

```bash
kubectl apply -f ingress.yaml
```

查看ingress

```bash
kubectl get ingress
```

接着修改本机host文件,增加一行映射

```
<ingressIp> node.backend
```
在浏览器输入`http://node.backend/`即可访问,但是windows上会提示访问失败,主要是`minikube`在非`Linux`上不能通过ip+端口进行访问。可这样改,看[这里](https://stackoverflow.com/questions/66275458/could-not-access-kubernetes-ingress-in-browser-on-windows-home-with-minikube)
在windows上进行下修改以达到访问的目的:
1、启动tunnel
```bash
minikube tunnel
```

2、通过ssh进行访问

```bash
minikube ssh
```

```bash
# 正常下能够显示前端信息
curl http://node.backend/
```

3、修改host文件,将之前的映射修改如下

```
127.0.0.1 node.backend
```

完成上面三步后即可在浏览器输入`http://node.backend/`进行服务的访问
103 changes: 103 additions & 0 deletions docs/program/Kuberentes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,109 @@ spec:
key: VERSION
```

## Ingress

Ingress 资源的主要组成部分:

- apiVersion: 定义了 API 的版本。在您的配置中是 networking.k8s.io/v1。
- kind: 指定资源类型。在您的配置中是 Ingress。
- metadata: 包含 Ingress 的名称和其他元数据,比如标签和注释。
- spec: 定义 Ingress 的具体配置,包括路由规则、主机名和路径等。

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: node-backend-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: node.backend
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: node-frontend-app
port:
number: 8884
- path: /backend
pathType: Prefix
backend:
service:
name: node-backend
port:
number: 8448
```

如上文件spec里面定义了主机名是`node.backend`,其中有两个访问路径

1、前端服务 (node-frontend-app):

- URL: http://node.backend/
- 服务: node-frontend-app
- 端口: 8884

2、后端服务 (node-backend):

- URL: http://node.backend/backend
- 服务: node-backend
- 端口: 8448

实例可看[这里](demoOne.html#使用-ingress)

## IngressClass

在Kubernetes中,`IngressClass`是一个用于定义和管理Ingress控制器的自定义容器。它允许集群管理员指定特定的Ingress控制器,并控制其行为。通过使用IngressClass,可以在一个集群中运行多个不同类型的Ingress控制器,并让每个Ingress资源明确地指向其中一个控制器

简单来说,IngressClass就好比面向对象语言中的类,每一个Ingress引用这个类就好比实例化这个类并使用它,以此来直接使用类中的方法什么的,在这里就是直接使用IngressClass中的配置。

优点:

- 配置简化:减少了在 Ingress 资源中配置控制器的细节,配置变得更加简洁和易读。
- 集群一致性:通过集中配置 IngressClass,可以确保所有使用相同 IngressClass 的 Ingress 资源都遵循相同的控制器配置。
- 易于维护:当需要修改 Ingress 控制器相关的配置时,只需更改 IngressClass,而不需要逐一修改所有的 Ingress 资源。

IngressClass 的主要组成部分:

- apiVersion: 定义 API 的版本,通常是 networking.k8s.io/v1。
- kind: 指定资源类型,这里是 IngressClass。
- metadata: 包含 IngressClass 的名称和其他元数据。
- spec: 定义 IngressClass 的具体配置,包括控制器的名称和参数等。

```yaml
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginxClass
spec:
controller: k8s.io/ingress-nginx
```

使用

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: example-service
port:
number: 80
```

## 探针

探针时k8s 用于检测容器健康状态,并且可以采取相应措施的一个方式。
Expand Down
Loading

0 comments on commit 5c7e441

Please sign in to comment.