1.3 k8s-上部署第一个应用程序

server/2025/1/16 8:54:54/

本节重点总结:

  • 部署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,内容如下

apiVersion: apps/v1	#与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment	#该配置的类型,我们使用的是 Deployment
metadata:	        #译名为元数据,即 Deployment 的一些基本属性和信息name: nginx-deployment	#Deployment 的名称labels:	    #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解app: nginx	#为该Deployment设置key为app,value为nginx的标签
spec:	        #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用replicas: 1	#使用该Deployment创建一个应用程序实例selector:	    #标签选择器,与上面的标签共同作用,目前不需要理解matchLabels: #选择包含标签app:nginx的资源app: nginxtemplate:	    #这是选择或创建的Pod的模板metadata:	#Pod的元数据labels:	#Pod的标签,上面的selector即选择包含标签app:nginx的Podapp: nginxspec:	    #期望Pod实现的功能(即在pod中部署)containers:	#生成container,与docker中的container是同一种- name: nginx	#container的名称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
 kubectl apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created

03查看部署结果

kubectl get 简介

  • kubectl get all 显示了关于运行中的 pod、service、deployment 以及 Replicaset 的关键信息。这是检查事物状态的首选命令
  • 你可以将 get 和单个对象一起使用,并添加–watch 标志以实时观察更新。
  • -o wide 代表显示更多信息

查看 Deployment

[root@k8s-master01 k8s_yamldate]# kubectl get deployments
NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment               1/1     1            1           5m2s

查看 pod

[root@k8s-master01 k8s_yamldate]# kubectl get pod   -o wide  |grep nginx-dep
nginx-deployment-746fbb99df-tdmb7              1/1     Running            0          7m31s   10.100.85.230   k8s-node01   <none>           <none>
[root@k8s-master01 k8s_yamldate]# 

获取类型为Node的资源列表

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

指定名称空间

  • 在命令后增加 -A 或 --all-namespaces 可查看所有 名称空间中 的对象
  • 使用参数 -n 可查看指定名称空间的对象,例如

查看所有名称空间的 Deployment

[root@k8s-master01 k8s_yamldate]# kubectl get deployments -A
NAMESPACE          NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
calico-system      calico-kube-controllers               1/1     1            1           184d
calico-system      calico-typha                          2/2     2            2           184d
default            grafana                               2/2     2            2           49d
default            ink8s-pod-metrics-deployment          1/1     1            1           45d
default            nginx-deployment                      1/1     1            1           17m
default            prometheus-operator                   1/1     1            1           35d
default            sleep                                 1/1     1            1           28d
ingress-nginx      ingress-nginx-controller              1/1     1            1           119d
kube-admin         k8s-mon-deployment                    1/1     1            1           87d
kube-system        coredns                               2/2     2            2           184d
kube-system        kube-state-metrics                    1/1     1            1           49d
kube-system        metrics-server                        1/1     1            1           178d
monitoring         blackbox-exporter                     1/1     1            1           32d
monitoring         grafana                               1/1     1            1           32d
monitoring         kube-state-metrics                    1/1     1            1           32d
monitoring         prometheus-adapter                    2/2     2            2           32d
monitoring         prometheus-operator                   1/1     1            1           32d
sidecar-injector   sidecar-injector-webhook-deployment   1/1     1            1           28d
tigera-operator    tigera-operator                       1/1     1            1           184d
[root@k8s-master01 k8s_yamldate]# 

查看 kube-system 名称空间的 Deployment

  • kube-system是k8s控制平面所在的namespace
[root@k8s-master01 k8s_yamldate]# kubectl get deployments -n kube-system
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
coredns              2/2     2            2           184d
kube-state-metrics   1/1     1            1           49d
metrics-server       1/1     1            1           178d

04 资源详细信息

  • kubectl describe 显示大量与你的集群相关的详细信息,你也可以将 describe 与单个对象一起使用。这个命令在 debug 过程中将大有用处。
  • 命令参数为 kubectl describe 资源类型 资源名称

查看名称为nginx-deployment的Deployment的信息

[root@k8s-master01 k8s_yamldate]# kubectl describe  deployments nginx-deployment
Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Fri, 08 Oct 2021 16:21:36 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:Labels:  app=nginxContainers:nginx:Image:        nginx:1.7.9Port:         <none>Host Port:    <none>Environment:  <none>Mounts:       <none>Volumes:        <none>
Conditions:Type           Status  Reason----           ------  ------Available      True    MinimumReplicasAvailableProgressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-deployment-746fbb99df (1/1 replicas created)
Events:Type    Reason             Age   From                   Message----    ------             ----  ----                   -------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 没有输出日志,所以您看到的结果是空的
kubectl logs nginx-deployment-746fbb99df-tdmb7 -f

查看coredns 中的日志

  • coredns
[root@k8s-master01 k8s_yamldate]# kubectl get pod -n kube-system                       
NAME                                   READY   STATUS    RESTARTS   AGE
coredns-68b9d7b887-ckwgh               1/1     Running   2          184d
coredns-68b9d7b887-vfmft               1/1     Running   2          184d
etcd-k8s-master01                      1/1     Running   8          170d
kube-apiserver-k8s-master01            1/1     Running   3          119d
kube-controller-manager-k8s-master01   1/1     Running   86         181d
kube-proxy-kc258                       1/1     Running   1          87d
kube-proxy-zx87g                       1/1     Running   2          184d
kube-scheduler-k8s-master01            1/1     Running   85         128d
kube-state-metrics-564668c858-dnmnh    1/1     Running   0          49d
metrics-server-7dbf6c4558-zwp5m        1/1     Running   0          49d
prometheus-0                           2/2     Running   0          49dkubectl logs coredns-68b9d7b887-vfmft -n kube-system 
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:39794->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:44110->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:52927->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:41434->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:44079->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:52584->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:47465->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:34707->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:45155->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:33024->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:53015->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:48743->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. A: read udp 10.100.32.137:33930->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:46920->114.114.114.114:53: i/o timeout
[ERROR] plugin/errors: 2 localhost. AAAA: read udp 10.100.32.137:43119->114.114.114.114:53: i/o timeout
[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 类似)
[root@k8s-master01 k8s_yamldate]# kubectl exec nginx-deployment-746fbb99df-tdmb7 -ti  -- /bin/sh
#  cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.96.0.10
options ndots:5
# 

本节重点总结:

  • 部署nginx Deployment
  • kubectl 基础命令
    • apply对资源进行配置
    • get 查看资源
    • describe 查看资源详细信息
    • logs 查看pod中的日志
    • exec 在pod中的容器环境内执行命令

http://www.ppmy.cn/server/158781.html

相关文章

excel仅复制可见单元格,仅复制筛选后内容

背景 我们经常需要将内容分给不同的人&#xff0c;做完后需要合并 遇到情况如下 那是因为直接选择了整列&#xff0c;当然不可以了。 下面提供几种方法&#xff0c;应该都可以 直接选中要复制区域然后复制&#xff0c;不要选中最上面的列alt;选中可见单元格正常复制&#xff…

MATLAB学习笔记目录

MATLAB学习笔记-生成纯音并保存-CSDN博客 MATLAB学习笔记-各种格式之间的转换 - 知乎 MATLAB学习笔记-胞组&#xff08;cell array&#xff09;转换为矩阵&#xff0c;cell2mat_matlab如何把元胞数组改为矩阵-CSDN博客MATLAB学习笔记-判断数组、结构体、数值、字符串是否相同…

NLP自然语言处理分词模块PaddleNLP

自然语言处理(NLP)是人工智能的重要组成部分,主要用于处理和分析自然语言数据。在中文的自然语言处理中,分词是关键的一环。分词是指将一段连续的文字切分成一个个单独的词语或短语,以便于进一步的分析和处理。 PaddleNLP 是基于飞桨(PaddlePaddle)深度学习框架的自然语…

【React】脚手架进阶

目录 暴露webpack配置package.json的变化修改webpack.config.js配置less修改域名、端口号浏览器兼容处理处理跨域 暴露webpack配置 react-scripts对脚手架中的打包命令进行封装&#xff0c;如何暴露这些打包配置呢&#xff1f;上篇写到在package.json中的scripts配置项中有eje…

通过将模型权重的矩阵表示为低秩矩阵,可以减少需要调整的参数数量,通俗易懂的解释,不懂你爬网线打我

通过将模型权重矩阵表示为低秩矩阵&#xff0c;可以减少需要调整的参数数量&#xff0c;原因在于低秩矩阵的结构本身就比高秩矩阵更“紧凑”&#xff0c;即它们需要的独立参数更少。具体来说&#xff0c;低秩矩阵的结构可以通过减少模型的自由度&#xff08;独立参数的数量&…

Codeforces Round 976 (Div. 2) and Divide By Zero 9.0(A-E)

链接&#xff1a;Dashboard - Codeforces Round 976 (Div. 2) and Divide By Zero 9.0 - Codeforces A. Find Minimum Operations 思路 可以观察发现这里有个进制的思想&#xff0c;转换为k进制把每位数相加即可 代码 void solve(){int n,k;cin>>n>>k;if(k1){…

vue2制作长方形容器,正方形网格散点图,并且等比缩放拖动

需求&#xff1a;有个长方形的容器&#xff0c;但是需要正方形的网格线&#xff0c;网格线是等比缩放的并且可以无线拖动的&#xff0c;并且添加自适应缩放和动态切换&#xff0c;工具是plotly.js,已完成功能如下 1.正方形网格 2.散点分组 3.自定义悬浮框的数据 4.根据窗口大小…

硬件学习笔记--29 IEC62052-11 主要内容简介

IEC62052-11是一项由国际电工委员会&#xff08;IEC&#xff09;制定的国际标准&#xff0c;主要涉及电能计量装置的测量和限制技术要求。该标准详细规定了电能计量装置的各个方面&#xff0c;包括测量原理、计算方法、测量误差、输出信号等。 ‌测量原理和计算方法‌&#xf…