zoukankan      html  css  js  c++  java
  • K8s(2)-部署应用

         一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序。为此,您需要创建Kubernetes Deployment配置。Deployment指示Kubernetes如何创建和更新应用程序的实例。创建Deployment后,Kubernetes调度组件将应用程序实例提到集群中的各个节点上。

    创建应用程序实例后,Kubernetes Deployment Controller会持续监视这些实例。如果托管实例的节点关闭或被删除,则Deployment控制器会替换它。这提供了一种自我修复机制来解决机器故障或维护问题。

    1. 检查kubectl配置是否正常
    [root@master ~]# kubectl version
    Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:35:51Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:28:14Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
    

      

    2. 查看集群中工作节点

        这里只有一个控制节点作为工作节点,注意要去掉控制节点的污点。

    [root@master ~]# kubectl get nodes
    NAME     STATUS   ROLES    AGE    VERSION
    master   Ready    master   2d8h   v1.13.2
    

      

    3. 部署应用

      通过创建一个部署(deployment),部署一个应用

    [root@master ~]# kubectl run kubernetes-bootcamp --image=jocatalin/kubernetes-bootcamp:v1 --port=8080
    kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
    deployment.apps/kubernetes-bootcamp created
    
    •   部署的名字: kubernetes-bootcamp
    •        镜像地址: jocatalin/kubernetes-bootcamp:v1
    •        Pod的端口: 8080

    这个操作会在后台进行下面的动作:

    1. 寻找一个合适的节点能够运行应用实例
    2. 调度该节点运行应用程序
    3. 当需要时,重新分配一个节点运行程序
    4. 查看部署

        我们看到有1个部署正在运行应用程序的单个实例

    [root@master ~]# kubectl get deployments
    NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
    kubernetes-bootcamp   1/1     1            1           26m
    

      

    5. 访问应用

        Pods运行在k8s的内部网络,他们能够被同一个集群的Pods访问,但是不能被外部网络访问。

     kubectl命令可以创建一个代理,将通信转发到集群范围的专用网络中。代理可以通过按control-c终止,并且在运行时不会显示任何输出。

      我们将打开第二个终端窗口来运行代理。

    [root@master ~]# kubectl proxy 
    Starting to serve on [::]:8001
    

      

    api服务器将根据pod名称自动为每个pod创建一个端点,该端点也可以通过代理访问。

    首先,我们需要获取pod名称,然后将其存储在环境变量pod_name中:

    export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"
    "}}{{end}}')
    echo Name of the Pod: $POD_NAME
    

      

    通过pod的名称访问应用

    [root@master ~]# curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
    Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7f56b875dc-6zbjt | v=1
    

      

  • 相关阅读:
    botzone Tetris2
    NOIP2017游记
    城乡联谊胡策会糊厕R3
    SRM 20
    AtCoder Regular Contest 082
    AtCoder Grand Contest 019
    复数模版
    SRM13
    NOI2017&&codeM2017游记
    java多线程编程
  • 原文地址:https://www.cnblogs.com/zydev/p/10318801.html
Copyright © 2011-2022 走看看