在Kubernetes(K8S)中,存活探针(liveness probe)和就绪探针(readiness probe)是非常重要的概念,它们用来确定容器的状态,以便K8S可以及时地对容器进行管理。对于刚入行的小白来说,了解并实现这两种探针是非常重要的。接下来我将介绍如何实现“k8s 存活探针就绪探针”。

整个过程可以分为以下步骤:

| 步骤 | 操作 |
|------|--------------------------------------------------------------|
| 1 | 创建一个Deployment或Pod |
| 2 | 为Deployment或Pod添加存活探针和就绪探针 |
| 3 | 部署Deployment或Pod到Kubernetes集群 |

接下来分别说明每一步需要做什么,并提供相应的代码示例。

**步骤一:创建一个Deployment或Pod**

首先,需要创建一个Deployment或Pod,可以通过YAML文件来定义。以下是一个简单的Deployment的示例:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app-image:latest
```

上面的代码定义了一个名为`my-app`的Deployment,包含了3个副本,每个副本中包含一个名为`my-app-container`的容器。这个容器是用`my-app-image:latest`镜像创建的。

**步骤二:为Deployment或Pod添加存活探针和就绪探针**

接下来,在Deployment或Pod的容器中添加存活探针和就绪探针的定义。以下是一个示例:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app-image:latest
readinessProbe:
httpGet:
path: /health
port: 8080
periodSeconds: 5
initialDelaySeconds: 10
successThreshold: 1
failureThreshold: 3
livenessProbe:
httpGet:
path: /health
port: 8080
periodSeconds: 5
initialDelaySeconds: 20
timeoutSeconds: 1
```

以上代码中,我们为`my-app-container`容器添加了一个就绪探针和一个存活探针。就绪探针使用HTTP GET请求检查`/health`路径的端口`8080`,每隔5秒检查一次,延迟10秒开始检查,成功1次后即被认为是就绪。存活探针也是使用HTTP GET请求检查`/health`路径的端口`8080`,每隔5秒检查一次,延迟20秒开始检查,超时1秒后将标记为失败。

**步骤三:部署Deployment或Pod到Kubernetes集群**

最后,将已添加存活探针和就绪探针的Deployment或Pod部署到Kubernetes集群中。可以使用`kubectl`命令来部署。

```bash
kubectl apply -f my-app-deployment.yaml
```

通过上述步骤,就成功地为Kubernetes中的Deployment或Pod添加了存活探针和就绪探针。

总结一下,在K8S中,存活探针和就绪探针是确保容器正常运行的重要机制,通过定义适当的探针,可以更好地管理和监控容器的状态。对于初学者来说,理解并实现这两种探针是非常有益的。希望这篇文章能够帮助你更好地理解和应用存活探针和就绪探针。