本节重点总结:
- 摆设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: nginx
- template: #这是选择或创建的Pod的模板
- metadata: #Pod的元数据
- labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
- app: nginx
- spec: #期望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 nodes
- NAME 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=nginx
- Containers:
- nginx:
- Image: nginx:1.7.9
- Port: <none>
- Host Port: <none>
- Environment: <none>
- Mounts: <none>
- Volumes: <none>
- Conditions:
- Type Status Reason
- ---- ------ ------
- Available True MinimumReplicasAvailable
- Progressing 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 中的日记
- [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 49d
- kubectl 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中的容器环境内实行下令
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |