使用nginx作为示例
使用kubectl 命令部署
部署deployment
kubectl create deployment nginx-deployment-kc --image=nginx --replicas=3 --port=80
部署service,向外暴露Nginx容器的端口
kubectl expose deployment nginx-deployment-kc --type=NodePort --port=80 --target-port=80
检查部署状态
kubectl get deployment # 查看 Deployment 列表 kubectl get svc # 查看 Service 列表
nginx-deployment-kc NodePort 10.104.123.85 <none> 80:31165/TCP 12m
80:31165/TCP 31165就是svc对外暴露的端口,可以通过节点上任意节点ip+该端口访问pod
验证部署结果
curl -X GET http://172.22.1.121:31165
使用yaml文件部署
部署deployment
touch nginx-deployment.yaml
# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-yaml # Deployment 名称 spec: replicas: 3 # 副本数3个 selector: matchLabels: app: nginx-deployment-yaml template: metadata: labels: app: nginx-deployment-yaml spec: containers: - name: my-nginx-c image: nginx # nginx 镜像 ports: - containerPort: 80 # 暴露端口
kubectl apply -f nginx-deployment.yaml
部署service
touch nginx-service.yaml
# nginx-service.yaml apiVersion: v1 kind: Service metadata: name: nginx-service-yaml spec: selector: app: nginx-deployment-yaml ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort # 类型是 NodePort
kubectl apply -f nginx-service.yaml
验证
验证方式同上
删除资源对象
kubectl delete deployment <deployment名称>
kubectl delete svc <service名称>
yaml文件部署的对象删除
kubectl delete -f <YAML文件名>
部署Apache应用
touch apache-deployment.yaml
# nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: test-apache-dep # Deployment 名称 spec: replicas: 3 # 副本数3个 selector: matchLabels: app: test-apache-dep template: metadata: labels: app: test-apache-dep spec: containers: - name: my-apache-dep image: httpd # nginx 镜像 ports: - containerPort: 80 # 暴露端口
touch apache-service.yaml
# nginx-service.yaml apiVersion: v1 kind: Service metadata: name: apache-service spec: selector: app: test-apache-dep ports: - protocol: TCP port: 80 targetPort: 80 type: NodePort # 类型是 NodePort
生成deployment模板
kubectl create deployment my-nginx-deploy --image=nginx --dry-run=client -o yaml > my-nginx-deployment.yaml