1.3 k8s-上摆设第一个应用程序

打印 上一主题 下一主题

主题 832|帖子 832|积分 2496

本节重点总结:



  • 摆设nginx Deployment
  • kubectl 底子下令

    • apply对资源进行设置
    • get 查看资源
    • describe 查看资源具体信息
    • logs 查看pod中的日记
    • exec 在pod中的容器环境内实行下令

Deployment 基本概念



  • Deployment 译名为 摆设。在k8s中,通过发布 Deployment,可以创建应用程序 (docker image) 的实例 (docker container)
  • 这个实例会被包罗在称为 Pod 的概念中,Pod 是 k8s 中最小可管理单元。
  • 在 k8s 集群中发布 Deployment 后,Deployment 将指示 k8s 怎样创建和更新应用程序的实例

    • master 节点将应用程序实例调度到集群中的具体的节点上。

  • 创建应用程序实例后,Kubernetes Deployment Controller 会持续监控这些实例

    • 假如运行实例的 worker 节点关机或被删除,则 Kubernetes Deployment Controller 将在群集中资源最优的另一个 worker 节点上重新创建一个新的实例
    • 这提供了一种自我修复机制来办理呆板故障或维护题目。

摆设 nginx Deployment

01 创建文件 nginx-deployment.yaml,内容如下

  1. apiVersion: apps/v1        #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
  2. kind: Deployment        #该配置的类型,我们使用的是 Deployment
  3. metadata:                #译名为元数据,即 Deployment 的一些基本属性和信息
  4.   name: nginx-deployment        #Deployment 的名称
  5.   labels:            #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
  6.     app: nginx        #为该Deployment设置key为app,value为nginx的标签
  7. spec:                #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
  8.   replicas: 1        #使用该Deployment创建一个应用程序实例
  9.   selector:            #标签选择器,与上面的标签共同作用,目前不需要理解
  10.     matchLabels: #选择包含标签app:nginx的资源
  11.       app: nginx
  12.   template:            #这是选择或创建的Pod的模板
  13.     metadata:        #Pod的元数据
  14.       labels:        #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
  15.         app: nginx
  16.     spec:            #期望Pod实现的功能(即在pod中部署)
  17.       containers:        #生成container,与docker中的container是同一种
  18.       - name: nginx        #container的名称
  19.         image: nginx:1.7.9        #使用镜像nginx:1.7.9创建container,该container默认80端口可访问
复制代码
02 应用 YAML 文件

   kubectl 简介
  

  • kubectl 是 Kubernetes 的下令行工具,人们通常通过它与 Kubernetes 进行交互
  • 通过 kubectl 可以或许对集群自己进行管理,并可以或许在集群上进行容器化应用的安装摆设。
   kubectl apply 简介
  

  • kubectl apply 这一下令可以通过文件名或控制台输入,对资源进行设置
  • 而且 apply 可以或许对集群资源进行声明式管理:

    • 假如资源不存在,apply 将创建它
    • 假如它存在,apply 将更改它

  • 别的,apply 还可以或许添加 Service 到实用的资源大概通过添加 Pod 自动化弹性伸缩的 Deployment
  1. kubectl apply -f nginx-deployment.yaml
  2. deployment.apps/nginx-deployment created
复制代码
03查看摆设效果

   kubectl get 简介
  

  • kubectl get all 表现了关于运行中的 pod、service、deployment 以及 Replicaset 的关键信息。这是检查事物状态的首选下令
  • 你可以将 get 和单个对象一起利用,并添加–watch 标志以实时观察更新。
  • -o wide 代表表现更多信息
   查看 Deployment
  1. [root@k8s-master01 k8s_yamldate]# kubectl get deployments
  2. NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
  3. nginx-deployment               1/1     1            1           5m2s
复制代码
  查看 pod
  1. [root@k8s-master01 k8s_yamldate]# kubectl get pod   -o wide  |grep nginx-dep
  2. nginx-deployment-746fbb99df-tdmb7              1/1     Running            0          7m31s   10.100.85.230   k8s-node01   <none>           <none>
  3. [root@k8s-master01 k8s_yamldate]#
复制代码
  获取类型为Node的资源列表
  

  • NAME 代表节点的名称
  • STATUS 代表节点的状态,ready表示正常
  • ROLES 代表节点的角色,control-plane,master 代表控制平面和master
  • AGE 代表启动的时间
  • VERSION 代表kubelet的版本号
  1. [root@k8s-master01 k8s_yamldate]# kubectl get nodes
  2. NAME           STATUS   ROLES                  AGE    VERSION
  3. k8s-master01   Ready    control-plane,master   184d   v1.20.1
  4. k8s-node01     Ready    <none>                 87d    v1.20.1
复制代码
指定名称空间



  • 在下令后增加 -A 或 --all-namespaces 可查看所有 名称空间中 的对象
  • 利用参数 -n 可查看指定名称空间的对象,例如
   查看所有名称空间的 Deployment
  1. [root@k8s-master01 k8s_yamldate]# kubectl get deployments -A
  2. NAMESPACE          NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
  3. calico-system      calico-kube-controllers               1/1     1            1           184d
  4. calico-system      calico-typha                          2/2     2            2           184d
  5. default            grafana                               2/2     2            2           49d
  6. default            ink8s-pod-metrics-deployment          1/1     1            1           45d
  7. default            nginx-deployment                      1/1     1            1           17m
  8. default            prometheus-operator                   1/1     1            1           35d
  9. default            sleep                                 1/1     1            1           28d
  10. ingress-nginx      ingress-nginx-controller              1/1     1            1           119d
  11. kube-admin         k8s-mon-deployment                    1/1     1            1           87d
  12. kube-system        coredns                               2/2     2            2           184d
  13. kube-system        kube-state-metrics                    1/1     1            1           49d
  14. kube-system        metrics-server                        1/1     1            1           178d
  15. monitoring         blackbox-exporter                     1/1     1            1           32d
  16. monitoring         grafana                               1/1     1            1           32d
  17. monitoring         kube-state-metrics                    1/1     1            1           32d
  18. monitoring         prometheus-adapter                    2/2     2            2           32d
  19. monitoring         prometheus-operator                   1/1     1            1           32d
  20. sidecar-injector   sidecar-injector-webhook-deployment   1/1     1            1           28d
  21. tigera-operator    tigera-operator                       1/1     1            1           184d
  22. [root@k8s-master01 k8s_yamldate]#
复制代码
  查看 kube-system 名称空间的 Deployment
  

  • kube-system是k8s控制平面所在的namespace
  1. [root@k8s-master01 k8s_yamldate]# kubectl get deployments -n kube-system
  2. NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
  3. coredns              2/2     2            2           184d
  4. kube-state-metrics   1/1     1            1           49d
  5. metrics-server       1/1     1            1           178d
复制代码
04 资源具体信息



  • kubectl describe 表现大量与你的集群相关的具体信息,你也可以将 describe 与单个对象一起利用。这个下令在 debug 过程中将大有用处。
  • 下令参数为 kubectl describe 资源类型 资源名称
   查看名称为nginx-deployment的Deployment的信息
  1. [root@k8s-master01 k8s_yamldate]# kubectl describe  deployments nginx-deployment
  2. Name:                   nginx-deployment
  3. Namespace:              default
  4. CreationTimestamp:      Fri, 08 Oct 2021 16:21:36 +0800
  5. Labels:                 app=nginx
  6. Annotations:            deployment.kubernetes.io/revision: 1
  7. Selector:               app=nginx
  8. Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
  9. StrategyType:           RollingUpdate
  10. MinReadySeconds:        0
  11. RollingUpdateStrategy:  25% max unavailable, 25% max surge
  12. Pod Template:
  13.   Labels:  app=nginx
  14.   Containers:
  15.    nginx:
  16.     Image:        nginx:1.7.9
  17.     Port:         <none>
  18.     Host Port:    <none>
  19.     Environment:  <none>
  20.     Mounts:       <none>
  21.   Volumes:        <none>
  22. Conditions:
  23.   Type           Status  Reason
  24.   ----           ------  ------
  25.   Available      True    MinimumReplicasAvailable
  26.   Progressing    True    NewReplicaSetAvailable
  27. OldReplicaSets:  <none>
  28. NewReplicaSet:   nginx-deployment-746fbb99df (1/1 replicas created)
  29. Events:
  30.   Type    Reason             Age   From                   Message
  31.   ----    ------             ----  ----                   -------
  32.   Normal  ScalingReplicaSet  19m   deployment-controller  Scaled up replica set nginx-deployment-746fbb99df to 1
复制代码
05 查看pod中的日记



  • logs 下令需要一个 pod 名称。当在多个 pod 中时,利用-c my-container 标志来指定一个容器
  • 利用–previous 标志来获取不再运行的容器信息。
   查看名称为nginx-XXXXXXX的Pod内的容器打印的日记
  

  • 本案例中的 nginx-pod 没有输出日记,所以您看到的效果是空的
  1. kubectl logs nginx-deployment-746fbb99df-tdmb7 -f
复制代码
  查看coredns 中的日记
  

  • coredns
  1. [root@k8s-master01 k8s_yamldate]# kubectl get pod -n kube-system                       
  2. NAME                                   READY   STATUS    RESTARTS   AGE
  3. coredns-68b9d7b887-ckwgh               1/1     Running   2          184d
  4. coredns-68b9d7b887-vfmft               1/1     Running   2          184d
  5. etcd-k8s-master01                      1/1     Running   8          170d
  6. kube-apiserver-k8s-master01            1/1     Running   3          119d
  7. kube-controller-manager-k8s-master01   1/1     Running   86         181d
  8. kube-proxy-kc258                       1/1     Running   1          87d
  9. kube-proxy-zx87g                       1/1     Running   2          184d
  10. kube-scheduler-k8s-master01            1/1     Running   85         128d
  11. kube-state-metrics-564668c858-dnmnh    1/1     Running   0          49d
  12. metrics-server-7dbf6c4558-zwp5m        1/1     Running   0          49d
  13. prometheus-0                           2/2     Running   0          49d
  14. kubectl logs coredns-68b9d7b887-vfmft -n kube-system
  15. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:39794->114.114.114.114:53: i/o timeout
  16. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:44110->114.114.114.114:53: i/o timeout
  17. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:52927->114.114.114.114:53: i/o timeout
  18. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:41434->114.114.114.114:53: i/o timeout
  19. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:44079->114.114.114.114:53: i/o timeout
  20. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:52584->114.114.114.114:53: i/o timeout
  21. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:47465->114.114.114.114:53: i/o timeout
  22. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:34707->114.114.114.114:53: i/o timeout
  23. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:45155->114.114.114.114:53: i/o timeout
  24. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:33024->114.114.114.114:53: i/o timeout
  25. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:53015->114.114.114.114:53: i/o timeout
  26. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:48743->114.114.114.114:53: i/o timeout
  27. [ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:33930->114.114.114.114:53: i/o timeout
  28. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:46920->114.114.114.114:53: i/o timeout
  29. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:43119->114.114.114.114:53: i/o timeout
  30. [ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:57370->114.114.114.114:53: i/o timeout
复制代码
06 在pod中的容器环境内实行下令



  • kubectl exec - 在pod中的容器环境内实行下令(和下令docker exec 类似)
  1. [root@k8s-master01 k8s_yamldate]# kubectl exec nginx-deployment-746fbb99df-tdmb7 -ti  -- /bin/sh
  2. #  cat /etc/resolv.conf
  3. search default.svc.cluster.local svc.cluster.local cluster.local
  4. nameserver 10.96.0.10
  5. options ndots:5
  6. #
复制代码
本节重点总结:



  • 摆设nginx Deployment
  • kubectl 底子下令

    • apply对资源进行设置
    • get 查看资源
    • describe 查看资源具体信息
    • logs 查看pod中的日记
    • exec 在pod中的容器环境内实行下令


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

老婆出轨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表