https://www.katacoda.com/courses/kubernetes/kubectl-run-containers
來生成deployment和service吧
用命令生成deployment
kubectl create deployment http --image=katacoda/docker-http-server:latest --dry-run=true -o yaml > deployment.yaml
此處 --dry-run=true是為了只生成deployment.yaml文件而不生成deployment
kubectl apply -f deployment.yaml
用kubectl get deployment 和kubectl get pot -o wide可以看到deployment和pod都已生成
用命令生成service
kubectl expose deployment http --name=httpsvc --external-ip=172.17.0.17 --port=8000 --targer-port=80
此處--name=httpsvc是要生成的service name
--external-ip=172.17.0.17是給要生成的service設置的可訪問的external-ip
--port=8000這個是service的端口
--target-port=80這個是pod容器的端口
curl http://172.17.0.17:8000 如有返回證明此服務可以正常訪問
如上圖,ens3網卡對應的是172.17.0.17, 所以curl http://172.17.0.17:8000 可以正常訪問。如果kubectl expose deployment http --name=httpsvc --external-ip=172.17.0.18 --port=8000 --targer-port=80, 將external-ip設置成一個無法訪問的地址,雖然service還是會生成,但curl http://172.17.0.18:8000會報連接錯誤
Scale replicas
kubectl scale deployment http --replicas=3
kubectl get pod會發現pod變成了3個
deployment.yaml的例子:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp1
spec:
replicas: 4
selector:
matchLabels:
app: webapp1
template:
metadata:
labels:
app: webapp1
spec:
containers:
- name: webapp1
image: katacoda/docker-http-server:latest
ports:
- containerPort: 80
service.yaml的例子:
apiVersion: v1
kind: Service
metadata:
name: webapp1-svc
labels:
app: webapp1
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
selector:
app: webapp1