deployment
This commit is contained in:
157
kubernetes/workloads/deployment.md
Normal file
157
kubernetes/workloads/deployment.md
Normal file
@@ -0,0 +1,157 @@
|
||||
#### 1. Deployment with Resource Limits and Horizontal Pod Autoscaler
|
||||
|
||||
```yaml
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: myapp
|
||||
namespace: my-ns
|
||||
labels:
|
||||
app.kubernetes.io/name: myapp
|
||||
app.kubernetes.io/env: development
|
||||
spec:
|
||||
replicas: 5
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: myapp
|
||||
app.kubernetes.io/env: development
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: myapp
|
||||
app.kubernetes.io/env: development
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx # change image and apply again
|
||||
resources:
|
||||
limits:
|
||||
memory: "128Mi"
|
||||
cpu: "500m"
|
||||
requests:
|
||||
memory: "64Mi"
|
||||
cpu: "250m"
|
||||
ports:
|
||||
- containerPort: 80
|
||||
```
|
||||
- `apiVersion: apps/v1`: Specifies the API version.
|
||||
- `kind: Deployment`: Defines the object as a Deployment.
|
||||
- `metadata`: Provides metadata for the Deployment.
|
||||
- `name`: The name of the Deployment (`myapp`).
|
||||
- `namespace`: The namespace where the Deployment will be created (`my-ns`).
|
||||
- `labels`: Key-value pairs to categorize the Deployment.
|
||||
- `spec`: Describes the desired state.
|
||||
- `replicas`: Number of pod replicas (5).
|
||||
- `selector`: Identifies the pods managed by this Deployment.
|
||||
- `template`: The pod template used by the Deployment.
|
||||
- `metadata`: Metadata for the pod template.
|
||||
- `spec`: Describes the pod specification.
|
||||
- `containers`: Defines the containers within the pod.
|
||||
- `name`: The name of the container (`nginx`).
|
||||
- `image`: The container image (`nginx`).
|
||||
- `resources`: Resource limits and requests.
|
||||
- `limits`: Maximum resources (`128Mi` memory, `500m` CPU).
|
||||
- `requests`: Minimum resources (`64Mi` memory, `250m` CPU).
|
||||
- `ports`: Container ports (80).
|
||||
|
||||
|
||||
### 2. Deployment with Rolling Update Strategy
|
||||
|
||||
```yaml
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: my-name
|
||||
labels:
|
||||
name: my-name
|
||||
spec:
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 1
|
||||
maxUnavailable: 1
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
name: my-name
|
||||
spec:
|
||||
containers:
|
||||
- image: ipedrazas/docmock
|
||||
name: my-name
|
||||
resources:
|
||||
requests:
|
||||
cpu: "20m"
|
||||
memory: "55M"
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /_status/healthz
|
||||
port: 5000
|
||||
initialDelaySeconds: 90
|
||||
timeoutSeconds: 10
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /_status/healthz
|
||||
port: 5000
|
||||
initialDelaySeconds: 30
|
||||
timeoutSeconds: 10
|
||||
env:
|
||||
- name: ENVVARNAME
|
||||
value: ENVVARVALUE
|
||||
ports:
|
||||
- containerPort: 5000
|
||||
name: my-name
|
||||
volumeMounts:
|
||||
- mountPath: /data
|
||||
name: data
|
||||
volumes:
|
||||
- name: data
|
||||
emptyDir: {}
|
||||
restartPolicy: Always
|
||||
imagePullPolicy: Always
|
||||
```
|
||||
- `apiVersion: extensions/v1beta1`: Specifies the API version.
|
||||
- `kind: Deployment`: Defines the object as a Deployment.
|
||||
- `metadata`: Provides metadata for the Deployment.
|
||||
- `name`: The name of the Deployment (`my-name`).
|
||||
- `labels`: Key-value pairs to categorize the Deployment.
|
||||
- `spec`: Describes the desired state.
|
||||
- `strategy`: Rolling update strategy.
|
||||
- `rollingUpdate`: Defines the update strategy.
|
||||
- `maxSurge`: Maximum number of additional pods (1).
|
||||
- `maxUnavailable`: Maximum number of unavailable pods (1).
|
||||
- `type`: The type of update strategy (`RollingUpdate`).
|
||||
- `template`: The pod template used by the Deployment.
|
||||
- `metadata`: Metadata for the pod template.
|
||||
- `spec`: Describes the pod specification.
|
||||
- `containers`: Defines the containers within the pod.
|
||||
- `name`: The name of the container (`my-name`).
|
||||
- `image`: The container image (`ipedrazas/docmock`).
|
||||
- `resources`: Resource requests.
|
||||
- `requests`: Minimum resources (`20m` CPU, `55M` memory).
|
||||
- `livenessProbe`: Health check for the container.
|
||||
- `httpGet`: HTTP GET request for the probe.
|
||||
- `path`: The path to check (`/_status/healthz`).
|
||||
- `port`: The port to check (5000).
|
||||
- `initialDelaySeconds`: Initial delay before the probe starts (90 seconds).
|
||||
- `timeoutSeconds`: Timeout for the probe (10 seconds).
|
||||
- `readinessProbe`: Readiness check for the container.
|
||||
- `httpGet`: HTTP GET request for the probe.
|
||||
- `path`: The path to check (`/_status/healthz`).
|
||||
- `port`: The port to check (5000).
|
||||
- `initialDelaySeconds`: Initial delay before the probe starts (30 seconds).
|
||||
- `timeoutSeconds`: Timeout for the probe (10 seconds).
|
||||
- `env`: Environment variables for the container.
|
||||
- `name`: The name of the environment variable (`ENVVARNAME`).
|
||||
- `value`: The value of the environment variable (`ENVVARVALUE`).
|
||||
- `ports`: Container ports.
|
||||
- `containerPort`: The container port (5000).
|
||||
- `name`: The name of the port (`my-name`).
|
||||
- `volumeMounts`: Mounting volumes to the container.
|
||||
- `mountPath`: The path to mount the volume (`/data`).
|
||||
- `name`: The name of the volume (`data`).
|
||||
- `volumes`: Defines the volumes.
|
||||
- `name`: The name of the volume (`data`).
|
||||
- `emptyDir`: An empty directory volume.
|
||||
- `restartPolicy`: Restart policy for the container (`Always`).
|
||||
- `imagePullPolicy`: Image pull policy (`Always`).
|
||||
|
||||
Reference in New Issue
Block a user