当前位置: 首页 > web >正文

k8s-pod-01的学习

对于k8s-pod-01的学习

检查k8s集群是否正常

1. 从node节中检查
ps -ef | grep kubelet # 查看服务是否启动2. 查看网络插件是否开启
[root@k8s-node-12 ~]# docker ps | grep flannel
020ba15a9d76        f3729ca97827                                        "/opt/bin/flanneld -…"   42 minutes ago      Up 42 minutes                           k8s_kube-flannel_kube-flannel-ds-qwcxb_kube-flannel_222ea8e4-25a4-407d-9d0a-3188311fce84_1
f199ca98f29a        registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 42 minutes ago      Up 42 minutes                           k8s_POD_kube-flannel-ds-qwcxb_kube-flannel_222ea8e4-25a4-407d-9d0a-3188311fce84_2

在这里插入图片描述

格式化命令格式# -o wide 显示详细完整的信息
[root@k8s-10-master ~]# kubectl get nodes -o wide
NAME            STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION                CONTAINER-RUNTIME
k8s-10-master   Ready    master   18h   v1.19.3   10.0.0.10     <none>        CentOS Linux 7 (Core)   3.10.0-1160.71.1.el7.x86_64   docker://19.3.15
k8s-node-11     Ready    <none>   18h   v1.19.3   10.0.0.11     <none>        CentOS Linux 7 (Core)   3.10.0-1160.71.1.el7.x86_64   docker://19.3.15
k8s-node-12     Ready    <none>   18h   v1.19.3   10.0.0.12     <none>        CentOS Linux 7 (Core)   3.10.0-1160.71.1.el7.x86_64   docker://19.3.15# 简洁的输出
[root@k8s-10-master ~]# kubectl get nodes 
NAME            STATUS   ROLES    AGE   VERSION
k8s-10-master   Ready    master   18h   v1.19.3
k8s-node-11     Ready    <none>   18h   v1.19.3
k8s-node-12     Ready    <none>   18h   v1.19.3
  1. flannel 是一个网络插件,每一个node上都要运行,以容器的形式,以pod的方式运行
  2. pod
  3. 在这里插入图片描述

基于namespace 查询资源

基于声明yaml,创建pod资源

[root@k8s-master-10 ~]#cat linux0224-pod-2.yml 
apiVersion: v1
kind: Pod
metadata:name: linux0224-pod-2-nginxnamespace: linux0224
spec:containers:- image: nginx:latestimagePullPolicy: IfNotPresentname: test-nginx-2
  • namespace这里的作用是资源组,对资源单独的创建一个环境去管理
  • 默认有一个default的资源组,namespace,kubelet不指定默认就是
[root@k8s-10-master ~]# kubectl get  namespaces
NAME               STATUS   AGE
calico-apiserver   Active   17h
calico-system      Active   17h
default            Active   18h
kube-flannel       Active   18h
kube-node-lease    Active   18h
kube-public        Active   18h
kube-system        Active   18h
tigera-operator    Active   17h# 查看flannel插件
[root@k8s-10-master ~]# kubectl -n kube-flannel get po
NAME                    READY   STATUS    RESTARTS   AGE
kube-flannel-ds-dljbj   1/1     Running   1          18h
kube-flannel-ds-nwqn4   1/1     Running   0          18h
kube-flannel-ds-qwcxb   1/1     Running   1          18h

编写yaml,声明式,获取,创建资源描述清单的流程

创建linux0224名称空间,去运行你的pod

[root@k8s-master-10 ~]#kubectl create namespace linux0224
namespace/linux0224 created
[root@k8s-master-10 ~]#
[root@k8s-master-10 ~]#
[root@k8s-master-10 ~]#kubectl get namespaces 
NAME              STATUS   AGE
default           Active   22h
kube-flannel      Active   21h
kube-node-lease   Active   22h
kube-public       Active   22h
kube-system       Active   22h
linux0224         Active   3s
[root@k8s-master-10 ~]#
[root@k8s-master-10 ~]#
[root@k8s-master-10 ~]#kubectl create -f linux0224-pod-2.yml 
pod/linux0224-pod-2-nginx created# 查看创建的pod
[root@k8s-10-master ~]# kubectl -n linux0224  get po -owide 
NAME                    READY   STATUS    RESTARTS   AGE   IP         NODE          NOMINATED NODE   READINESS GATES
linux0224-pod-2-nginx   1/1     Running   0          49s   10.2.1.2   k8s-node-12   <none>           <none>

创建一个nginx-pod 查看容器命名规则

[root@k8s-master-10 /all-k8s-yaml]#cat nginx-pod-3.yml 
apiVersion: v1
kind: Pod
metadata:name: nginx-3namespace: linux0224
spec:containers:- image: nginx:1.21.1name: t3-nginx# 生成和查看
[root@k8s-10-master all-k8s-yaml]# kubectl create  -f nginx-pod-3.yml 
pod/nginx-3 created
[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get pod
NAME                    READY   STATUS    RESTARTS   AGE
linux0224-pod-2-nginx   1/1     Running   0          24m
nginx-3                 1/1     Running   0          31s# 记录后的更新状态
[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get po -o wide -w

在这里插入图片描述

Events:Type    Reason     Age    From               Message----    ------     ----   ----               -------Normal  Scheduled  4m15s  default-scheduler  Successfully assigned linux0224/nginx-3 to k8s-node-11Normal  Pulling    4m15s  kubelet            Pulling image "nginx:1.21.1"Normal  Pulled     3m55s  kubelet            Successfully pulled image "nginx:1.21.1" in 19.234136512sNormal  Created    3m55s  kubelet            Created container t3-nginxNormal  Started    3m55s  kubelet            Started container t3-nginx
[root@k8s-master-10 /all-k8s-yaml]#
[root@k8s-master-10 /all-k8s-yaml]#
[root@k8s-master-10 /all-k8s-yaml]#kubectl -n linux0224 describe pod nginx-3

=今天开始=查看官网的yaml资料=====

这里的官网资料是华为云的,自己可以自己去找找看。。

今天任务简单点,学完昨日脑图知识点即可

主要学习目标

在这里插入图片描述

如何学习k8s最核心的对象(k8s集群内资源)

k8s的一些抽象的理念,pod,控制器,service,代码层面的逻辑概念。

集群外资源?node资源,k8s所处的机器,cpu,内存等资源

在这里插入图片描述

  1. pod如何部署pod控制器
  2. pod如何对外提供访问,学服务发现
  3. 学习pod数据的持久化
  4. 可有可无,优化pod配置文件管理,配置文件管理资源

Kuberneters对象的描述

kubernetes中资源可以使用yaml描述(如果您对于yaml格式不了解,可以参考yaml的语法,)以下的内容分为4个部分

  • typeMeta : 对象类型元数据,声明对象后使用哪个API的版本,哪个类型的对象。
  • objectMeta : 对象的元数据,包括对象的名称,使用的标签
  • status : 对象的实际状态,只能在对象创建后看到,创建对象无需指定
  • 在这里插入图片描述

最终的yaml

# 、给pod控制器,放入到具体ns下[root@k8s-master-10 ~]#kubectl create namespace linux0224
namespace/linux0224 created[root@k8s-10-master ~]# kubectl get namespace 
NAME               STATUS   AGE
calico-apiserver   Active   26h
calico-system      Active   26h
default            Active   27h
kube-flannel       Active   27h
kube-node-lease    Active   27h
kube-public        Active   27h
kube-system        Active   27h
linux0224          Active   8h
tigera-operator    Active   26h
[root@k8s-10-master ~]# # 修改yaml
apiVersion: apps/v1
kind: Deployment
# 给这个资源,创建到xx名称空间下 ,添加名称空间的字段是? 如何写?写到哪?
metadata:name:  nginxlabels:app:  nginxnamespace: linux0224
spec:selector:matchLabels:app: nginxreplicas: 6template:metadata:labels:app:  nginxspec:containers:- name:  nginx-linux0224image:  nginx:1.15.1
# 当前这个yaml,没有描述,NodeSelector,节点选择器,以后说,自动分配到某个Node节点上的

创建声明式yml的k8s对象

[root@k8s-10-master all-k8s-yaml]# kubectl create -f t1-nginx-deployment.yml 
deployment.apps/nginx created# 检查一下
[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get deployment.apps
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   6/6     6            6           113s[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get pods
NAME                     READY   STATUS    RESTARTS   AGE
linux0224-pod-2-nginx    1/1     Running   1          8h
nginx-3                  1/1     Running   1          8h
nginx-84d9b94bd7-2tp6m   1/1     Running   0          3m56s
nginx-84d9b94bd7-9qkn5   1/1     Running   0          3m56s
nginx-84d9b94bd7-cfbhp   1/1     Running   0          3m56s
nginx-84d9b94bd7-kvc7f   1/1     Running   0          3m56s
nginx-84d9b94bd7-q9nq9   1/1     Running   0          3m56s
nginx-84d9b94bd7-qvqjg   1/1     Running   0          3m56s

查看所有的pod的信息

[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get pods -l app=nginx -owide
NAME                     READY   STATUS    RESTARTS   AGE    IP          NODE          NOMINATED NODE   READINESS GATES
nginx-84d9b94bd7-2tp6m   1/1     Running   0          6m4s   10.2.1.6    k8s-node-12   <none>           <none>
nginx-84d9b94bd7-9qkn5   1/1     Running   0          6m4s   10.2.1.8    k8s-node-12   <none>           <none>
nginx-84d9b94bd7-cfbhp   1/1     Running   0          6m4s   10.2.2.11   k8s-node-11   <none>           <none>
nginx-84d9b94bd7-kvc7f   1/1     Running   0          6m4s   10.2.2.13   k8s-node-11   <none>           <none>
nginx-84d9b94bd7-q9nq9   1/1     Running   0          6m4s   10.2.2.12   k8s-node-11   <none>           <none>
nginx-84d9b94bd7-qvqjg   1/1     Running   0          6m4s   10.2.1.7    k8s-node-12   <none>           <none>

在这里插入图片描述

修改namespace下pod的信息

kubectl exec nginx-84d9b94bd7-qvqjg  --bash -c 'echo "sleep my yzk" ' > /usr/share/nginx/html/index.html[root@k8s-master-10 /all-k8s-yml]#kubectl  -n linux0224  exec nginx-84d9b94bd7-qvqjg  -- bash -c 'echo "sleep yi hui  ">/usr/share/nginx/html/index.html'[root@k8s-10-master all-k8s-yaml]# curl 10.2.1.7
sleep yi hui  

静态POD玩法流程

docker 调度的是容器,在k8s集群中,最小的调度单元pod(豆荚)

为什么引入Pod

  • 容器引擎解耦
  • 多容器共享网络的存储功能,进程,空间,支持的业务也更加的灵活

创建pod

所有都加上namespace来理解

先查看当前机器上的所有的pod,详细信息创建 nginx pod
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 run --image=nginx:1.21.1 my-pod-1-nginx
pod/my-pod-1-nginx created创建一个 mysql pod 
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 run --image=mysql:5.7  my-pod-2-mysql
pod/my-pod-2-mysql created# 检查
[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get pods -owide
NAME                     READY   STATUS              RESTARTS   AGE   IP          NODE          NOMINATED NODE   READINESS GATES
linux0224-pod-2-nginx    1/1     Running             1          9h    10.2.1.5    k8s-node-12   <none>           <none>
my-pod-1-nginx           0/1     ContainerCreating   0          22s   <none>      k8s-node-11   <none>           <none>
my-pod-2-mysql           0/1     ContainerCreating   0          14s   <none>      k8s-node-12   <none>           <none>
nginx-3                  1/1     Running             1          8h    10.2.1.4    k8s-node-12   <none>           <none>

我们发现mysql-pod还在chuagn

查看pod日志,找出故障原因

# 检查my-mysql01  pod这个的日志信息[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 logs my-mysql01
2025-06-15 13:10:02+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2025-06-15 13:10:02+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2025-06-15 13:10:02+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2025-06-15 13:10:02+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specifiedYou need to specify one of the following as an environment variable:- MYSQL_ROOT_PASSWORD- MYSQL_ALLOW_EMPTY_PASSWORD- MYSQL_RANDOM_ROOT_PASSWORDpod创建成共,容器运行参数有问题,导致挂了kubectl run 弊端得编辑修改pod信息即可

在这里插入图片描述

运行一个可访问的mysql5.7 声明yaml去运行

# yaml怎么写?
# 基于现有资源,修改即可
[root@k8s-master-10 ~]#kubectl -n linux0224 get po my-pod-2-mysql -oyaml > /all-k8s-yml/my-pod-2-mysql.yml# 修改如下[root@k8s-master-10 ~]#cat /all-k8s-yml/my-pod-2-mysql.yml 
apiVersion: v1
kind: Pod
metadata:labels:run: my-pod-2-mysqlname: my-pod-2-mysqlnamespace: linux0224
spec:containers:- image: mysql:5.7imagePullPolicy: IfNotPresentname: my-pod-2-mysqlenv:- name: MYSQL_ROOT_PASSWORDvalue: 'linux0224'
# 查看pod, 以及显示pod的标签信息
# 删除旧的pod
kubectl -n linux0224 delete pod my-pod-2-mysql #再新建新的pod
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 get pods -l run=my-pod-2-mysql -o wide
NAME             READY   STATUS    RESTARTS   AGE   IP          NODE          NOMINATED NODE   READINESS GATES
my-pod-2-mysql   1/1     Running   0          39s   10.2.1.60   k8s-node-11   <none>           <none>
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]## 到这都看懂111
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]## 用一个临时pod,访问这个mysql-pod,然后退出自动删除自己
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]## 可以临时开启一个pod,去链接mysql-pod服务端
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 run test-mysql  --rm -it --image=mysql:5.7 -- bash# 查看mysql-pod本身的输数据信息[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 exec my-pod-2-mysql -- bash -c 'mysql -uroot -plinux0224 -e "show databases;"'
mysql: [Warning] Using a password on the command line interface can be insecure.
Database
information_schema
linux0224666
mysql
performance_schema
sys
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]## kandong 1111111

导出pod配置为yaml清单

[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 get pods my-pod-2-mysql -o yaml > /tmp/latest_mysql57.yml

删除创建的pod

  • 静态pod

  • 控制器下的pod区别

如kubectl run创建的如 yaml中创建的是 KIND: pod类型删除了就没了,不会自建[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 delete pod my-pod-1-nginx 
pod "my-pod-1-nginx" deleted
[root@k8s-master-10 /all-k8s-yml]## 查看pod资源的标签
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 get pods -owide  --show-labels # 基于标签删除pod
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 delete pods -l run=my-pod-2-mysql
pod "my-pod-2-mysql" deleted# 删除deployment控制器下的nginx
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 describe pods nginx-84d9b94bd7-5pdqx# 删不掉,副本保障,重建6个nginx-pod

查看deployment和pod 两个资源

deployment 就是部署

[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224  get pods 
NAME                     READY   STATUS    RESTARTS   AGE
linux0224-pod-2-nginx    1/1     Running   1          10h
my-pod-1-nginx           1/1     Running   0          51m
my-pod-2-mysql           1/1     Running   0          13m
nginx-3                  1/1     Running   1          9h
nginx-84d9b94bd7-2tp6m   1/1     Running   0          94m
nginx-84d9b94bd7-9qkn5   1/1     Running   0          94m
nginx-84d9b94bd7-cfbhp   1/1     Running   0          94m
nginx-84d9b94bd7-kvc7f   1/1     Running   0          94m
nginx-84d9b94bd7-q9nq9   1/1     Running   0          94m
nginx-84d9b94bd7-qvqjg   1/1     Running   0          94m[root@k8s-10-master all-k8s-yaml]# kubectl -n linux0224 get deployment.apps 
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   6/6     6            6           95m

label玩法—学习kubectl命令

  • node的查看,node标签管理,,给机器加上一个标签 k-v
[root@k8s-master-10 /all-k8s-yml]#kubectl get nodes -owide --show-labels # 修改node节点的 label信息
[root@k8s-master-10 /all-k8s-yml]#kubectl label nodes k8s-node-12 diskType=sansumssd --overwrite 
node/k8s-node-12 labeled# 查看标签
[root@k8s-master-10 /all-k8s-yml]#kubectl get nodes -owide --show-labels -l diskType=sansumssd
NAME          STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME   LABELS
k8s-node-12   Ready    <none>   10d   v1.19.3   10.0.0.12     <none>        CentOS Linux 7 (Core)   3.10.0-862.el7.x86_64   docker://19.3.15    beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,diskType=sansumssd,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node-12,kubernetes.io/os=linux# 给11机器加一个标签[root@k8s-master-10 /all-k8s-yml]#kubectl label nodes k8s-node-11 cpuType=interl
node/k8s-node-11 labeled
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]#kubectl label nodes k8s-node-11 cpuType=intel --overwrite 
node/k8s-node-11 labeled
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]#
[root@k8s-master-10 /all-k8s-yml]#kubectl get nodes -owide --show-labels -l cpuType=intel
NAME          STATUS   ROLES    AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME   LABELS
k8s-node-11   Ready    <none>   10d   v1.19.3   10.0.0.11     <none>        CentOS Linux 7 (Core)   3.10.0-862.el7.x86_64   docker://19.3.15    beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,cpuType=intel,daemon=need,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node-11,kubernetes.io/os=linux
[root@k8s-master-10 /all-k8s-yml]#
  • 静态pod创建,命令模式,查看,编辑,描述,删除
没有yaml的形式哦,不推荐使用kubectl run   xxxxkubectl get pods   xxxxkubectl edit  pods  xxxxkubectl describe pods    xxxxkubectl delete pods     xxxx
  • 静态pod的 yaml模式,声明式定义,增删改查
yaml语法,删除资源 kubectl explain  资源.字段.字段.xxxxxxkubectl  create  -f    xx.ymlkubectl  delete -f  xx.yml
  • pod打标签,增删改查
[root@k8s-master-10 /all-k8s-yml]#kubectl -n linux0224 get po --show-labels 
NAME             READY   STATUS    RESTARTS   AGE   LABELS
my-pod-2-mysql   1/1     Running   0          16s   run=my-pod-2-mysql增删改查
  • 初体验控制器deployment玩法

在这里插入图片描述

http://www.xdnf.cn/news/14511.html

相关文章:

  • AI for 数据分析:技术演进与应用实践
  • 汇川IS620N伺服驱动器如何通过etherCAT主站转profinet网关与西门子1200plc通讯
  • STL容器分类总结
  • 快速取模指数算法:密码学的核心引擎
  • 深度学习的正则化
  • Web server failed to start. Port XXX was already in use.
  • Python day32
  • Nginx超快速入门
  • 基于经济学季刊方法测算的中国城市蔓延指数
  • 【Dv3Admin】系统异步任务配置文件解析
  • 朴素贝叶斯:用条件逻辑照亮未知
  • 七 医学影像云平台-影像检验互联互认平台建设中遇到的问题
  • WIP数据,有bad wafer/lot,追踪设备/机台问题
  • Java 变量类型转换的选择题
  • react小白学习快速上手
  • Appium+python自动化(二十四) - 元素等待
  • 在虚拟机 银河麒麟|ubuntu 中安装和配置NVIDIA显卡驱动
  • 设计模式精讲 Day 2:工厂方法模式(Factory Method Pattern)
  • 多模态学习路线(3)——MLLMs主流大模型
  • 基于统计检验与机器学习模型对牛油果数据的分析与预测
  • Python 文件操作详解
  • 算法题(170):地毯填补问题
  • Proteus8.17-安装说明
  • 揭开MongoDB的神秘面纱:从陌生到初识
  • 【Elasticsearch】文档(一):新增 删除
  • vue中的h渲染函数
  • Java项目中使用到的技术——《异步调用》
  • java+vue+SpringBoo摄影师分享交流社区(程序+数据库+报告+部署教程+答辩指导)
  • 大模型笔记6:微调
  • Go多个协程实现顺序打印