190 lines
4.3 KiB
Markdown
190 lines
4.3 KiB
Markdown
## Namespace Definition
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: my-ns
|
|
```
|
|
|
|
- **apiVersion**: Specifies the version of the Kubernetes API.
|
|
- **kind**: Defines the type of Kubernetes object, here it's a `Namespace`.
|
|
- **metadata**: Contains data that helps uniquely identify the object, including a `name`.
|
|
|
|
This YAML file creates a namespace named `my-ns` which isolates a group of resources within Kubernetes.
|
|
|
|
## Pod Definitions
|
|
|
|
### Nginx Pod
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
namespace: my-ns
|
|
name: nginx-pod
|
|
labels:
|
|
app: app1
|
|
zone: staging
|
|
version: v1.0.1
|
|
app.kubernetes.io/product: nginx-pod
|
|
spec:
|
|
containers:
|
|
- name: naginx-container
|
|
image: nginx:latest
|
|
ports:
|
|
- containerPort: 80
|
|
```
|
|
|
|
- **metadata.namespace**: Specifies the namespace the pod belongs to (`my-ns`).
|
|
- **metadata.name**: The name of the pod (`nginx-pod`).
|
|
- **metadata.labels**: Key-value pairs for organizing and selecting resources.
|
|
- **spec.containers**: Specifies the containers within the pod. Each container has:
|
|
- **name**: Container name.
|
|
- **image**: The Docker image to run (`nginx:latest`).
|
|
- **ports**: List of ports to expose from the container (`containerPort: 80`).
|
|
|
|
This file defines a pod named `nginx-pod` running the latest Nginx container in the `my-ns` namespace.
|
|
|
|
### Test Pod 1
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
namespace: my-ns
|
|
name: testpod1
|
|
spec:
|
|
containers:
|
|
- name: c00
|
|
image: ubuntu
|
|
command: ["/bin/bash", "-c", "while true; do echo Hello-Coder; sleep 5 ; done"]
|
|
- name: c01
|
|
image: ubuntu
|
|
command: ["/bin/bash", "-c", "while true; do echo Hello-Programmer; sleep 5 ; done"]
|
|
```
|
|
|
|
- **spec.containers.command**: Overrides the default command for the container, in this case, running a looped bash script that prints a message every 5 seconds.
|
|
|
|
This defines a pod named `testpod1` with two Ubuntu containers in the `my-ns` namespace, each running a different command.
|
|
|
|
## Pod with Resource Requests and Limits
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
namespace: my-ns
|
|
name: testpod1
|
|
spec:
|
|
containers:
|
|
- name: c00
|
|
image: ubuntu
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- while true; do echo Hello-Coder; sleep 5 ; done
|
|
- name: c01
|
|
image: ubuntu
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- while true; do echo Hello-Programmer; sleep 5 ; done
|
|
resources:
|
|
limits:
|
|
memory: "128Mi"
|
|
cpu: "500m"
|
|
requests:
|
|
memory: "64Mi"
|
|
cpu: "250m"
|
|
```
|
|
|
|
- **resources.limits**: Specifies the maximum amount of resources a container can use.
|
|
- **resources.requests**: Specifies the amount of resources a container is guaranteed.
|
|
|
|
This pod configuration defines resource limits and requests for the containers to ensure they do not exceed specific memory and CPU usage.
|
|
|
|
## Pod with NodeSelector
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
namespace: my-ns
|
|
name: testpod3
|
|
spec:
|
|
containers:
|
|
- name: c00
|
|
image: ubuntu
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- while true; do echo Hello-Coder; sleep 5 ; done
|
|
- name: c01
|
|
image: ubuntu
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- while true; do echo Hello-Programmer; sleep 5 ; done
|
|
resources:
|
|
limits:
|
|
memory: "128Mi"
|
|
cpu: "500m"
|
|
requests:
|
|
memory: "64Mi"
|
|
cpu: "250m"
|
|
nodeSelector:
|
|
kubernetes.io/hostname: k8s2
|
|
kubernetes.io/disk: ssd
|
|
```
|
|
|
|
- **nodeSelector**: Ensures the pod is scheduled on nodes with the specified labels (`kubernetes.io/hostname: k8s2` and `kubernetes.io/disk: ssd`).
|
|
|
|
This configuration places the pod on specific nodes that match the given labels.
|
|
|
|
## Simple Pod Templates
|
|
|
|
### Basic Pod
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: myapp
|
|
labels:
|
|
name: myapp
|
|
spec:
|
|
containers:
|
|
- name: myapp
|
|
image: <Image>
|
|
resources:
|
|
limits:
|
|
memory: "128Mi"
|
|
cpu: "500m"
|
|
ports:
|
|
- containerPort: <Port>
|
|
```
|
|
|
|
This is a template for a basic pod named `myapp` with configurable image and port settings.
|
|
|
|
### Nginx Pod
|
|
|
|
```yaml
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: my-pod
|
|
labels:
|
|
app: MyApp
|
|
spec:
|
|
containers:
|
|
- name: my-container
|
|
image: nginx:latest
|
|
ports:
|
|
- containerPort: 80
|
|
```
|
|
|
|
This defines a pod named `my-pod` running an Nginx container exposing port 80.
|
|
|
|
|