🕒

快速使用k8s部署应用

使用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