# 运维学K8S好找工作吗

作为一名经验丰富的开发者,我将带你了解如何学习并使用 Kubernetes (K8S) 这一当今最热门的容器编排工具,帮助你在运维领域找到理想工作。

## K8S 学习流程

下面是学习 K8S 的基本流程,我们将逐步进行:

| 步骤 | 描述 |
|------|----------------------|
| 1 | 安装 K8S 集群 |
| 2 | 创建 Deployment |
| 3 | 水平扩展 Deployment |
| 4 | 创建 Service |
| 5 | 使用 Ingress |

## 步骤 1: 安装 K8S 集群

安装 K8S 集群是学习 Kubernetes 的第一步,可以通过 Minikube 来快速搭建一个本地的单节点 K8S 集群。

```bash
# 安装 Minikube
brew install minikube

# 启动 Minikube 集群
minikube start
```

## 步骤 2: 创建 Deployment

在 K8S 中,Deployment 是管理 Pod 和 ReplicaSet 的对象,下面是一个简单的 Nginx Deployment 配置示例。

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
```

使用以下命令创建 Deployment 对象:

```bash
kubectl apply -f nginx-deployment.yaml
```

## 步骤 3: 水平扩展 Deployment

K8S 允许根据实际需求动态调整 Deployment 的副本数量,可以使用 `kubectl scale` 命令来水平扩展 Deployment。

```bash
kubectl scale deployment nginx-deployment --replicas=5
```

## 步骤 4: 创建 Service

Service 在 K8S 中用于暴露 Deployment 的网络服务,让其他应用可以访问到对应的 Pod。

```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
```

使用以下命令创建 Service 对象:

```bash
kubectl apply -f nginx-service.yaml
```

## 步骤 5: 使用 Ingress

Ingress 允许集群外部的流量访问到集群内的 Service,可以通过配置 Ingress 资源实现请求的路由和负载均衡。

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

使用以下命令创建 Ingress 对象:

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

通过上面的步骤,你已经学会了用 K8S 创建 Deployment、Service 和 Ingress,为你的实际工作和未来的职业发展打下了坚实的基础。祝你在运维领域找工作顺利!