zoukankan      html  css  js  c++  java
  • 第一章 先把Kubernetes跑起来

    1.1 先跑起来

      k8s官网已经为大家准备好了一个现成的最小可用系统。

       https://kubernetes.io/docs/tutorials/kubernetes-basics/

    1.2 创建K8s集群

      https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/

      全屏后就是一个模拟的linux系统。

      kubectl get nodes

      kubectl get pods

      kubectl cluster-info            // 查看集群信息

      kubectl cluster-info dump // 集群详细信息

    1.3 部署应用

      kubectl run --help :  这个命令用来部署一个应用

      kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080            // 启动pod

      --image: 指定镜像。

      --port : 设置应用对外服务的端口。

      pod:  紧密相关的一组容器放到一个Pod中,同一个Pod中的容器共享IP地址和Port空间。

           上面命令运行后:使用    kubectl get deployment

                         NAME                     DESIRED          CURRENT        UP-TO-DATE            AVAILABLE            AGE
                       kubernetes-bootcamp     1                   1                           1                             1                            11s

    1.4  访问应用

      默认情况下,所有Pod只能在集群内部访问。对于上边的例子,要访问应用只能直接访问8080端口。为了能从外部访问应用,我们需要将容器的

    8080端口映射到节点的端口

      kubectl expose        // 将资源(deployment、service、replica setreplication controllerpod )暴露为新的Kubernetes Service。并使用该资源的选择器作

                                                为指定端口上新服务的选择器。

          kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port=8080
          service/kubernetes-bootcamp exposed

          然后查看services:

       $ kubectl get services
      NAME                                 TYPE       CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
      kubernetes                          ClusterIP      10.96.0.1           <none>                 443/TCP         10m
      kubernetes-bootcamp          NodePort   10.108.24.178    <none>          8080:31385/TCP    2m

            NodePort:   表示外界可以通过访问node port 的31385(这个是随机的)访问这个服务。

            Service:可以暂时理解为端口映射。

      $ hostname                                // 查看当前的host name
       minikube
      $ curl minikube:31385              // 访问服务
               Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-rwrs6 | v=1

     1.5 scale 应用

      $ kubectl scale deployments/kubernetes-bootcamp --replicas=3           // 增加副本数量
        deployment.extensions/kubernetes-bootcamp scaled
      $ kubectl get deployment
        NAME                              DESIRED     CURRENT   UP-TO-DATE  AVAILABLE   AGE
        kubernetes-bootcamp              3                  3                 3                     3                19m

      这个时候再看

        kubectl get pods, 发现是三个pods在运行:
          NAME                                                   READY              STATUS               RESTARTS                     AGE
    kubernetes-bootcamp-56cdd766d-jfhgh                     1/1                    Running                      0                                 2m
    kubernetes-bootcamp-56cdd766d-m2df7                   1/1                    Running                      0                                 2m
    kubernetes-bootcamp-56cdd766d-rwrs6                    1/1                    Running                      0                                 22m

     然后再访问service:  发现后端的请求被打散到不同的容器,这样就实现了负载均衡。

      $ curl minikube:31385
        Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jfhgh | v=1
      $ curl minikube:31385
        Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jfhgh | v=1
      $ curl minikube:31385
        Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-m2df7 | v=1
      $ curl minikube:31385
        Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-jfhgh | v=1
      $ curl minikube:31385
        Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-56cdd766d-m2df7 | v=1

    1.6 滚动更新(rolling update)

      当前使用image的版本为v1, 执行如下命令将其升级到v2:

      $ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
        deployment.extensions/kubernetes-bootcamp image updated

            上面的更改立即生效,pod会逐渐被清除,新的pod逐渐启动。

       要想回退到原来的版本: kubectl rollout undo deployments/kubernetes-bootcamp

      

        

  • 相关阅读:
    开源电话交换平台FreeSwitch的安装与配置
    快速编辑 Shell 命令行
    RedHat在字符模式下安装图形界面
    Linux字符界面切换到图形界面
    row cache lock
    cursor: pin S
    Excel 2010高级应用-气泡图(八)
    JDBC异常之数据库表不存在
    java.sql.SQLException之数组越界
    java中JDBC报错(一)
  • 原文地址:https://www.cnblogs.com/liufei1983/p/10172243.html
Copyright © 2011-2022 走看看