Kubernetes(k8s) 笔记总结(二)

news/2024/11/28 13:55:46/

提示:针对kubernetes的工作均衡学习。

文章目录

  • 1. Kubernetes 创建资源方式
  • 2. Kubernetes 操作NameSpace
  • 3. Kubernetes的 Pod应用
    • 3.1 Pod的 解释
    • 3.2 通过命令行来创建一个pod
    • 3.3 配置文件方式创建一个Pod
    • 3.4 dashboard 可视化操作Pod
    • 3.5 针对Pod的一些细节操作
    • 3.6 Pod的 多容器操作
  • 4. Kubernetes的 使用Deployment部署应用
    • 4.1 Deployment的 作用 和 自愈
    • 4.2 Deployment的 多副本能力
    • 4.3 Deployment的 扩缩容能力
    • 4.4 Deployment的 自愈&故障转移能力
    • 4.5 Deployment的 滚动更新
    • 4.6 Deployment的 版本回退
  • 5. Kubernetes的 工作负载

1. Kubernetes 创建资源方式


k8s资源创建方式:

  • 命令行,直接通过k8s对应命令行进行创建。
  • YAML,通过yaml配置文件,然后在执行kubectl apply -y xxx来应用的方式。

在这里插入图片描述

2. Kubernetes 操作NameSpace


名称空间:是对集群资源进行隔离划分。默认只隔离资源,不隔离网络。

在这里插入图片描述

在dashboard中可以看到一些名称空间:
在这里插入图片描述

方式一:通过命令行操作名称空间。

# 1. 查看名称空间
kubectl get ns# 2. 查看pod应用对应的名称空间
kubectl get pods -A
# 不带参数A仅仅查询default默认名称空间的内容。
kubectl get pods 
# -n参数:指定名称,仅查看对应name的pod应用信心。# 3. 创建名称空间:
kubectl create ns xxx
# 4. 删除名称空间:
kubectl delete ns xxx

方式二:使用yaml配置文件创建。

创建一个名称空间的yaml文件配置,如下:

  • 之后通过 kubectl apply -y xxx.yaml
apiVersion: v1
kind: Namespace
metadata:name: hello

删除方式有两种:

# 1. 通过delete ns来命令删除
kubectl delete ns xxx
# 2. 通过delete -f 依据对应配置文件进行删除。
kubectl delete -f xxx.yaml

在这里插入图片描述

3. Kubernetes的 Pod应用

3.1 Pod的 解释


k8s的pod就像docker中的容器。

Pod:一个Pod可以运行多个docker容器,Pod是kubernetes中应用的最小单位。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 通过命令行来创建一个pod


# 1. 通过命令行创建一个pod应用(默认创建在了默认名称空间)
kubectl run mynginx --image=nginx# 2. 查看default名称空间的Pod
kubectl get pod 
# 3. 查看pod的描述
kubectl describe pod Pod名字
# 4. 删除某名称空间下的pod,默认是default名称空间。
kubectl delete pod Pod名字 -n defautl
# 也可以删除多个。# 5. 查看Pod的运行日志
kubectl logs Pod名字

kubectl describe命令:
在这里插入图片描述
之后,通过docker ps也能看到,毕竟本质还是docker容器:
在这里插入图片描述

3.3 配置文件方式创建一个Pod


一个Pod创建的配置文件形式如下:

apiVersion: v1
kind: Pod
metadata:labels:run: mynginxname: mynginx
#  namespace: default
spec:containers:- image: nginxname: mynginx
# 1. 应用配置文件,创建pod
kubectl apply -f pod.yaml
# 2. 删除对应pod
kubectl delete -f pod.yaml 

3.4 dashboard 可视化操作Pod


dashboard 操作如下:
在这里插入图片描述
在这里插入图片描述

3.5 针对Pod的一些细节操作


可以通过以下命令进行更加详细的操作和测试:

# 假如:已经添加了一个nginx镜像的pod
# 1. 查看pod应用列表,对应的更加详细的信息(尤其是IP地址)
kubectl get pod -owide
# NAME      READY   STATUS    RESTARTS   AGE   IP              NODE        NOMINATED NODE   READINESS GATES
# mynginx   1/1     Running   0          85s   192.168.36.69   k8s-node1   <none>           <none> # 2. 使用Pod的ip+pod里面运行容器的端口就可以进行访问(nginx默认就是80)
curl 192.168.36.69
# 集群中的任意一个机器以及任意的应用都能通过Pod分配的ip来访问这个Pod

在这里插入图片描述

如果像进入Pod内部进行操作:

# 与docker的命令有点不同
kubectl exec -it mynginx -- /bin/bash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.6 Pod的 多容器操作


多容器的yaml配置如下操作:

apiVersion: v1
kind: Pod
metadata:labels:run: myappname: myapp
spec:
# 创建多个容器:containers:- image: nginxname: nginx- image: tomcat:8.5.68name: tomcat

在这里插入图片描述

之后,等待下载完成即可:
在这里插入图片描述


同样刚创建的Pod也会被分配IP,并且通过对应端口来进行访问:
在这里插入图片描述


如果出现问题,可以通过logs日志查看:

  • 也可以kubectl logs通过命令行操作,查看问题。
    在这里插入图片描述

4. Kubernetes的 使用Deployment部署应用

4.1 Deployment的 作用 和 自愈


Deployment部署的作用:控制Pod,使Pod拥有多副本、自愈、扩缩容等能力。

# 1. 创建一个Pod
kubectl run mynginx --image=nginx
# 2. 创建一个应用deployment部署。部署的名字叫做:mytomcat
kubectl create deployment mytomcat --image=tomcat:8.5.68
# 创建一个部署后,部署会自动创建一个Pod# 3. 测试监听命令可以使用如下:
watch -n 1 kubectl get pod # 来监听删除效果。# 4. 只有删除对应的deployment部署,才行
kubectl delete deploy mytomcat

在这里插入图片描述
简而言之,就是不怕宕机,如果出现问题了,k8s的deployment会自动重新创建一个,也就是所谓的自愈能力。

4.2 Deployment的 多副本能力


deployment命令行添加:

# --replicas=3就是代表复制上三份,deployment的多副本效果。
kubectl create deployment my-dep --image=nginx --replicas=3

在这里插入图片描述
dashboard添加:
在这里插入图片描述

配置文件添加:

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: my-depname: my-dep
spec:replicas: 3selector:matchLabels:app: my-deptemplate:metadata:labels:app: my-depspec:containers:- image: nginxname: nginx

4.3 Deployment的 扩缩容能力


在这里插入图片描述

# 1. 先部署3个
kubectl create deployment my-dep --image=nginx --replicas=3
# 2. 扩容到5个
kubectl scale --replicas=5 deployment/my-dep
# 3. 缩容到3个
kubectl scale --replicas=2 deploy/my-dep

还可以通过修改deploy部署配置文件来实现扩容、缩容:

# 通过修改配置文件来操作
kubectl edit deploy my-dep

还可以通过dashboard来操作:
在这里插入图片描述

4.4 Deployment的 自愈&故障转移能力


自愈:
在这里插入图片描述
故障转移:
在这里插入图片描述

提示:

# -w 参数也是监控 , 这个监控是k8s提供的
kubectl get pod -w

4.5 Deployment的 滚动更新


在这里插入图片描述

简而言之,就是开一个新版本,等新版本启动成功后,就杀死老版本。这样就完成了版本的迭代了。也就是不停机维护的效果。

# 可以查看yaml文件的一个配置
kubectl get deploy my-dep -oyaml
# 通过使用set来进行版本更新
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record
# 查看set版本更新是否成功
kubectl rollout status deployment/my-dep

在这里插入图片描述

4.6 Deployment的 版本回退


# 1. 查看版本的 历史记录
kubectl rollout history deployment/my-dep# 2. 查看某个历史详情
kubectl rollout history deployment/my-dep --revision=2# 3. 回滚(回到上次)
kubectl rollout undo deployment/my-dep# 4. 回滚(回到指定版本)
kubectl rollout undo deployment/my-dep --to-revision=2

回滚也是一个滚动更新的过程。

5. Kubernetes的 工作负载


除了Deployment,k8s还有 StatefulSet 、DaemonSet 、Job 等 类型资源。我们都称为 工作负载。

Deployment:无状态应用部署,例如:微服务,提供多副本等功能。

  • 无状态可以理解为没有数据存储的效果。

StatefulSet:有状态应用部署,例如:redis,mysql,提供稳定的存储、网络等功能。

  • 有状态可以理解有稳定存储等效果的。

DaemonSet:守护型应用部署,例如:日志收集组件,每个机器都要运行。有且仅有一份。

Job/CronJob:定时任务部署,例如:垃圾清理组件,可以在执行时间运行。

官方地址:https://kubernetes.io/zh/docs/concepts/workloads/controllers/

在dashboard也能操作:
在这里插入图片描述


http://www.ppmy.cn/news/10891.html

相关文章

基于 js 制作一个贪吃蛇小游戏

目录前言&#xff1a;项目效果展示&#xff1a;代码实现思路&#xff1a;使用方法&#xff1a;实现代码&#xff1a;总结&#xff1a;前言&#xff1a; 在工作学习之余玩一会游戏既能带来快乐&#xff0c;还能缓解生活压力&#xff0c;跟随此文一起制作一个小游戏吧。 描述&…

Java日期时间类

Java日期时间类Datenew Date()**获取当前系统时间**通过**指定毫秒数得到时间**format**指定日期格式**SimpleDateFormat的模式字母&#xff1a;parse()可以把**格式化的String转成对应Date**Calendar&#xff08;日历&#xff09;创建日期类对象获取日历对象的某个日历字段第三…

IPO合肥马郢计划:构筑美丽田园综合体上市

合肥市长丰县马郢社区曾经是省级贫困村&#xff0c;为了让这个原本相对落后美丽田园 上市拥有崭新的面貌。2017年至今实施美丽田园综合体、旅游扶贫等项目。马郢社区共有13个村民组、408户、1778人&#xff0c;全村建档立卡贫困户年人均收入仅2000多元。2015年&#xff0c;由杨…

python制作课堂点名系统,从此老师对我关爱有加

前言 大家早好、午好、晚好吖 ❤ ~ 准备工作 首先我们需要准备好点名的姓名文件&#xff0c;使用的时候导入进去就可以开始点名了。 新建一个文本文档&#xff0c;将姓名设置设置好&#xff0c;如下&#xff1a; 使用系统库和第三方库都比较常规 from PyQt5.QtWidgets impo…

【Java编程进阶】Java异常详解

推荐学习专栏&#xff1a;Java 编程进阶之路【从入门到精通】&#xff0c;从入门到就业精通&#xff0c;买不了吃亏&#xff0c;买不了上当&#xff01;&#xff01; 文章目录1. 异常2. 异常的体系3. Error4. 异常产生的过程5. throw 关键字6. 异常处理6.1 throws 关键字6.2 tr…

程序员们有什么好的编程习惯?

优良的代码显然不是制作优秀软件的唯一要素&#xff0c;但是主要的要素之一。我们可能拥有世界上最好的产品和营销团队&#xff0c;部署了最好的平台&#xff0c;并以最好的框架来构建软件&#xff0c;但归根结底&#xff0c;一款软件所做的一切&#xff0c;都是因为有人写了一…

如何进行小红书推广?小红书平台适合推广什么产品?

小红书作为一个生活方式社区&#xff0c;其最大独特性就在于&#xff0c;大部分互联网社区更多是依靠线上的虚拟身份&#xff0c;而小红书用户发布的内容都来自于真实生活&#xff0c;一个分享用户必须具备丰富的生活和消费经验&#xff0c;才能有内容在小红书分享&#xff0c;…

分布式理论协议与算法 第三弹 BASE理论

大部分人解释这 CAP 定律时&#xff0c;常常简单的表述为&#xff1a;“一致性、可用性、分区容错性三者你只能同时达到其中两个&#xff0c;不可能同时达到”。实际上这是一个非常具有误导性质的说法&#xff0c;而且在 CAP 理论诞生 12 年之后&#xff0c;CAP 之父也在 2012 …