ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kubernetes入门(三)——使用Deployment运行一个无状态应用

2021-05-06 19:52:03  阅读:137  来源: 互联网

标签:入门 Service app Deployment nginx 30088 deployment Kubernetes


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
  • 删除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.1443/TCP        18h
nginx        NodePort    10.110.78.6180: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 。使用:从集群外部访问 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 暴露您的应用

标签:入门,Service,app,Deployment,nginx,30088,deployment,Kubernetes
来源: https://blog.51cto.com/u_15190995/2757203

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有