Files
docker_practice/13_kubernetes_concepts/13.5_practice.md
T

109 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 13.5 实战练习
本章将通过一个具体的案例部署一个 Nginx 网站并为其配置 Service来串联前面学到的知识
开始前请先准备好可用的 Kubernetes 集群和 `kubectl` 上下文你可以先完成 [14.3 Docker Desktop](../14_kubernetes_setup/14.3_docker-desktop.md) [14.4 Kind](../14_kubernetes_setup/14.4_kind.md)并确认
```bash
kubectl get nodes
```
### 13.5.1 目标
1. 部署一个 Nginx Deployment
2. 创建一个 Service 暴露 Nginx
3. 通过端口转发或 NodePort 访问服务
### 13.5.2 步骤 1创建 Deployment
创建一个名为 `nginx-deployment.yaml` 的文件
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.28
ports:
- containerPort: 80
```
应用配置
```bash
kubectl apply -f nginx-deployment.yaml
```
### 13.5.3 步骤 2创建 Service
创建一个名为 `nginx-service.yaml` 的文件
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort # 使用 NodePort 方便本地测试
```
应用配置
```bash
kubectl apply -f nginx-service.yaml
```
查看分配的端口
```bash
kubectl get svc nginx-service
```
如果输出端口是 `80:30080/TCP`你可以通过 `http://<NodeIP>:30080` 访问 NginxDocker DesktopKind 等本地集群中NodePort 到宿主机的可达性取决于集群实现更稳定的本地访问方式是端口转发
```bash
kubectl port-forward svc/nginx-service 8080:80
```
然后访问 `http://localhost:8080`
> Ingress 只有在集群中已安装 Ingress controller 且配置了 IngressClass 时才会生效当前练习只覆盖 ServiceIngress/Gateway API 建议在完成第 14 章后再单独练习
### 13.5.4 步骤 3模拟滚动更新
修改 `nginx-deployment.yaml`将镜像版本改为 `nginx:1.28-alpine`
```bash
kubectl apply -f nginx-deployment.yaml
```
观察更新过程
```bash
kubectl rollout status deployment/nginx-deployment
```
### 13.5.5 步骤 4清理资源
练习结束后记得清理资源
```bash
kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml
```