k8s安装

目录

        • 一、K8s概念
        • 二、minikube安装
        • 三、部署应用到集群中
        • 四、Service
        • 五、k8s部署爬虫
          • 1、意义

一、K8s概念

  • 参考文章 ,参考视频
  • 它是一个为 容器化 应用提供集群部署和管理的开源工具,由 Google 开发:Kubernetes 可以为你提供集中式的管理集群机器和应用,加机器、版本升级、版本回滚,那都是一个命令就搞定的事,不停机的灰度更新,确保高可用、高性能、高扩展
    k8s安装_第1张图片

    k8s安装_第2张图片

二、minikube安装

  • 可直接通过官网已经搭建好的测试,不用进行下面的安装https://kubernetes.io/docs/tutorials/hello-minikube/
    k8s安装_第3张图片

  • 1、先安装docker,docker安装

  • 2、minikube只是一个 K8S 集群模拟器,只有一个节点的集群,只为测试用,master 和 worker 都在一起。安装minikube ,打开PowerShell执行如下命令
    k8s安装_第4张图片
    k8s安装_第5张图片

  • 3、然后继续执行minikube start , Kubernetes集群分为一个master主节点和worker工作节点

    # 启动集群
    minikube start --image-mirror-country='cn'
    # 查看节点。kubectl 是一个用来跟 K8S 集群进行交互的命令行工具
    kubectl get node
    # 停止集群
    minikube stop
    # 清空集群
    minikube delete --all
    # 安装集群可视化 Web UI 控制台
    minikube dashboard
    

    k8s安装_第6张图片k8s安装_第7张图片

三、部署应用到集群中

  • 1、有两种方式创建pod,一种是直接通过命令行的形式,一种是通过yaml文件的方式创建
  • 2、通过命令行的形式创建pod
    • kubectl run testapp --image=ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1
    • kubectl get pod
      k8s安装_第8张图片
  • 3、通过yaml文件的方式创建单个podkubectl apply -f ./pod1.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
    spec:
      # 定义容器,可以多个
      containers:
        - name: test-k8s # 容器名字
          image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
    
    k8s安装_第9张图片
  • 4、通过yaml文件的方式部署多个pod,kubectl apply -f ./app1.yamlDeployment 通过 label 关联起来 Pods
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      # 部署名字
      name: test-k8s
    spec:
      replicas: 2
      # 用来查找关联的 Pod,所有标签都匹配才行
      selector:
        matchLabels:
          app: test-k8s
      # 定义 Pod 相关数据
      template:
        metadata:
          labels:
            app: test-k8s
        spec:
          # 定义容器,可以多个
          containers:
          - name: test-k8s # 容器名字
            image: ccr.ccs.tencentyun.com/k8s-tutorial/test-k8s:v1 # 镜像
    
    k8s安装_第10张图片
  • 5、部署一个 nodejs web 应用,源码地址:Github
    # 部署应用
    kubectl apply -f app.yaml
    # 查看 deployment
    kubectl get deployment
    # 查看 pod
    kubectl get pod -o wide
    # 查看 pod 详情
    kubectl describe pod pod-name
    # 查看 log
    kubectl logs pod-name
    # 进入 Pod 容器终端, -c container-name 可以指定进入哪个容器。
    kubectl exec -it pod-name -- bash
    # 伸缩扩展副本
    kubectl scale deployment test-k8s --replicas=5
    # 把集群内端口映射到节点
    kubectl port-forward pod-name 8090:8080
    # 查看历史
    kubectl rollout history deployment test-k8s
    # 回到上个版本
    kubectl rollout undo deployment test-k8s
    # 回到指定版本
    kubectl rollout undo deployment test-k8s --to-revision=2
    # 删除部署
    kubectl delete deployment test-k8s
    

四、Service

  • 1、内部服务访问:service.yaml文件
    apiVersion: v1
    kind: Service
    metadata:
      name: kubia
    spec:
      selector:
        app: kubia
      # 默认 ClusterIP 集群内可访问,NodePort 节点可访问,LoadBalancer 负载均衡模式(需要负载均衡器才可用)
      type: ClusterIP
      ports:
        - port: 80        # 本 Service 的端口
          targetPort: 8080  # 容器端口
          # nodePort: 31000   # 节点端口,范围固定 30000 ~ 32767
    
    
  • 2、内部服务的默认类型是ClusterIP,只能在集群内部访问,我们可以进入到 Pod 里面访问:
    kubectl exec -it pod-name -- bash
    curl http://test-k8s:8080
    
  • 3、如果要在集群外部访问,可以通过端口转发实现(只适合临时测试用):kubectl port-forward service/kubia 8888:80 ;如果你用 minikube,也可以这样minikube service test-k8s
    kubectl get pods
    kubectl delete deployment kubia
    kubectl apply -f ./app1.yaml
    kubectl get pods
    kubectl apply -f ./service.yaml
    kubectl get svc
    kubectl describe svc kubia
    kubectl get pod -o wide
    kubectl exec kubia-76d97b7d8f-ffzmb -- curl -s http://kubia:80
    kubectl exec kubia-76d97b7d8f-ffzmb -- curl -s http://10.111.237.97:80
    kubectl port-forward service/kubia 8888:80
    访问localhost:8888
    
    k8s安装_第11张图片
    k8s安装_第12张图片
  • 4、对外暴露服务,上面我们是通过端口转发的方式可以在外面访问到集群里的服务,如果想要直接把集群服务暴露出来,我们可以使用NodePort 和 Loadbalancer 类型的 Service
  • 5、外部服务NodePort 的 yaml 文件
    apiVersion: v1
    kind: Service
    metadata:
      name: kubia-nodeport
    spec:
      selector:
        app: kubia
      # 默认 ClusterIP 集群内可访问,NodePort 节点可访问,LoadBalancer 负载均衡模式(需要负载均衡器才可用)
      type: NodePort
      ports:
        - port: 80        # 本 Service 的端口
          targetPort: 8080  # 容器端口
          nodePort: 30123   # 节点端口,范围固定 30000 ~ 32767
    
    k8s安装_第13张图片
    k8s安装_第14张图片
    在这里插入图片描述
  • 6、外部服务LoadBalancer的 yaml 文件 ,负载均衡器一般由云服务商提供或者自己 裸机搭建,需要一个负载均衡器的支持,因为它需要生成一个新的 IP 对外服务,否则状态就一直是 pendding,这个很少用,更高端的 Ingress 代替它
    k8s安装_第15张图片

五、k8s部署爬虫

1、意义
  • 1、了解过Docker Compose的应该知道,可以非常方便地启动Docker容器运行爬虫,然而大规模运维是行不通的!!!
    • 如何快速部署几十、上百、上千个爬虫程序并协同爬取?
    • 如何实现爬虫的批量更新?
    • 如何实时查看爬虫的运行状态和日志?
  • 2、未完不续

你可能感兴趣的:(OtherLearn,kubernetes,docker,容器)