Kubernetes中部署应用程序流程

  • 在Kubernetes中部署应用程序流程

    • 制作镜像(镜像按照作用分:1基础镜像,2运行环境镜像,3项目镜像)

      • dockerfile

    • 使用控制器部署镜像

      • Deployment

      • StatefulSet

      • DaemonSet

    • 对外暴漏应用

      • Service

      • Ingress

    • 日志监控

    • 日常运维

1. 制作镜像
Dockerfile
2. 使用Deployment控制器部署镜像
kubectl create deployment web --image=nginx
kubectl get deployment,pods
3.使用Service发布Pod
kubectl expose deployment web --port=80 --type=NodePort --target=80 -name=web
kubectl get service
  • Pod 与Deployment的关系

    • Deployment 时最常用的controllers,其他控制器还有DaemonSet,StatefulSet等

    • Controllers作用

      • 管理Pod对象

  • 使用标签与Pod关联

  • 控制器实现了了Pod的滚动更新,伸缩、副本管理、维护Pod状态等

  • Deployment的功能

    • 管理Pod和ReplicaSet

    • 具有上线部署、副本设定、滚动升级、回滚等功能

    • 提供声明式更新、例如只更新一个新的image

  • 应用场景:网站、API、微服务

  • 创建 Deployment(创建了一个 ReplicaSet,负责启动三个 nginx Pods)

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:1.14.2
            ports:
            - containerPort: 80
    # kubectl apply -f nginx-deployment.yaml 
    ​
    # kubectl get pods
    NAME                                READY   STATUS    RESTARTS   AGE
    nginx-deployment-66b6c48dd5-q2jgt   1/1     Running   0          97s
    nginx-deployment-66b6c48dd5-qcwxc   1/1     Running   0          97s
    nginx-deployment-66b6c48dd5-vwpk2   1/1     Running   0          97s
    ​
    # kubectl get deployment
    NAME               READY   UP-TO-DATE   AVAILABLE   AGE
    nginx-deployment   3/3     3            3           115s
    ​
    • 根据pod标签创建一个service

      # kubectl get pods --show-labels
      NAME                                READY   STATUS    RESTARTS   AGE     LABELS
      nginx-deployment-66b6c48dd5-q2jgt   1/1     Running   0          5m36s   app=nginx,pod-template-hash=66b6c48dd5
      nginx-deployment-66b6c48dd5-qcwxc   1/1     Running   0          5m36s   app=nginx,pod-template-hash=66b6c48dd5
      nginx-deployment-66b6c48dd5-vwpk2   1/1     Running   0          5m36s   app=nginx,pod-template-hash=66b6c48dd5
      ​

      apiVersion: v1
      kind: Service
      metadata:
        name: my-service
      spec:
        selector:
          app: nginx #
        ports:
          - protocol: TCP
            port: 80
            targetPort: 80  #目标端口
        type: NodePort
        
       

         # kubectl apply -f nginx-service.yaml
         # kubectl get svc
      NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
      kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        4d9h
      my-service   NodePort    10.96.152.189   <none>        80:32152/TCP   24s
      # 查看是否关联到app=nginx的容器
      # kubectl get ep
      NAME         ENDPOINTS                                                  AGE
      kubernetes   10.0.0.100:6443                                            4d9h
      my-service   192.168.169.129:80,192.168.169.130:80,192.168.169.131:80   84s
      ​
      # 内网访问
      # curl 192.168.169.129
      ​
      # 查看日志
      [root@k8s-master controllers]# kubectl logs nginx-deployment-66b6c48dd5-vwpk2
      192.168.235.192 - - [03/Nov/2021:14:39:25 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
      ​
      # 外网访问
      # curl 10.0.0.101:32152
      ​
      # 查看日志
      ​
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值