# Kubernetes HPA(Horizontal Pod Autoscaler)
## HPA 的作用
HPA 是 Kubernetes 提供的一種自動擴展 Pod 數量的機制,根據資源使用情況(如 CPU、內存)動態調整。
---
## 創建 HPA
使用以下指令創建 HPA:
```bash
kubectl autoscale deployment my-deployment --cpu-percent=50 --min=1 --max=10
```
---
## 查看 HPA 狀態
```bash
kubectl get hpa
```
---
## 使用範例
以下是一個簡單的 HPA 配置範例:
```yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
```
---
# Kubernetes 資源限制與請求
## 資源限制的作用
1. 確保單個 Pod 不會過度消耗節點資源。
2. 保證其他應用的穩定性。
---
## 定義資源請求與限制
```yaml
apiVersion: v1
kind: Pod
metadata:
name: resource-limited-pod
spec:
containers:
- name: nginx
image: nginx
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
```
---
# Kubernetes Network Policies
## Network Policy 的作用
Network Policy 用於控制 Pod 之間及 Pod 與外部之間的網路通信。
---
## 創建範例
以下是一個允許特定標籤的 Pod 訪問的 Network Policy:
```yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-specific
spec:
podSelector:
matchLabels:
role: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
```
---