Kubernetes入门(三)——使用Deployment运行一个无状态应用
2020-09-01 22:33
113 查看
Kubernetes集群搭建完成后,开始尝试部署一个"Hello World"的简单应用,据此了解Kubernetes的应用部署流程,熟悉yaml文件的核心配置。本文在Kubernetes集群部署了一个Nginx应用,并使用service把应用暴露给外部访问。以下是具体操作步骤,希望能给初学者提供一些参考。
1. 创建一个nginx deployment
- YAML文件描述一个运行nginx:1.19.1 Docker镜像的Deployment [1]
vim application/deployment.yaml apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 # tells deployment to run 2 pods matching the template template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19.1 ports: - containerPort: 80
- 通过YAML文件创建一个Deployment
kubectl apply -f application/deployment.yaml
- 展示Deployment相关信息
kubectl describe deployment nginx-deployment
- 列出deployment创建的pods
kubectl get pods -l app=nginx
- 展示某一个pod信息
kubectl describe pod <pod-name>
- 删除deployment
kubectl delete -f application/deployment.yaml
2. 使用service暴露你的应用
- 使用NodePort暴露30088端口给外部使用
cat << EOF >nginx-svc.yaml apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30088 EOF kubectl create -f nginx-svc.yaml
- 查看service
# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h nginx NodePort 10.110.78.61 <none> 80:30088/TCP 2m45s
- 访问
通过http://10.13.1.3:30088/ 或http://10.13.1.2:30088/ 访问nginx服务,其中10.13.1.3和10.13.1.2分别为宿主机IP。
- 删除service
kubectl delete -f nginx-svc.yaml
- Service 也可以用在 ServiceSpec 标记type的方式暴露 [3]
ClusterIP (默认) - 在集群的内部 IP 上公开 Service 。这种类型使得 Service 只能从集群内访问。 NodePort - 使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service 。使用<NodeIP>:<NodePort> 从集群外部访问 Service。是 ClusterIP 的超集。 LoadBalancer - 在当前云中创建一个外部负载均衡器(如果支持的话),并为 Service 分配一个固定的外部IP。是 NodePort 的超集。 ExternalName - 通过返回带有该名称的 CNAME 记录,使用任意名称(由 spec 中的externalName指定)公开 Service。不使用代理。这种类型需要kube-dns的v1.7或更高版本。
3. 删除deployment
kubectl delete deployment nginx-deployment
4. 参考资料
[1] https://kubernetes.io/zh/docs/tasks/run-application/run-stateless-application-deployment/ 使用Deployment运行一个无状态应用 [2] http://qinghua.github.io/kubernetes-deployment/ 轻松了解Kubernetes部署功能 [3] https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/expose/expose-intro/ 官网文档——使用 Service 暴露您的应用
相关文章推荐
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之三
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之二
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之二
- 使用API获取一个应用是否运行结束的例子
- 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用
- 一个resin运行多个应用,使用nginx控制访问
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之五
- Hololens入门之使用Unity开发一个简单的应用
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之三
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之二
- 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用
- Hololens入门之使用Unity开发一个简单的应用
- QT单实例应用,使用QLocalSocket进行进程通信,不同运行权限下运行的同一个进程通讯失败,报错 “QLocalSocket::SocketAccessError”
- 使用react-native做一个简单的应用-02项目搭建与运行
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之一
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之四
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之五
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之四
- 使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之一