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