南宁世尊商贸网站建设,千瓜数据,怎么做网站的ico,网站空间在哪里买k8s简介#xff1a; kubernetes#xff0c;俗称k8是#xff0c;用于自动部署#xff0c;扩缩和管理容器化应用程序的开源系统#xff0c;它将组成应用程序的容器#xff0c;组合成逻辑单元#xff0c;便于管理和服务发现。
k8s的作用 自动化上线和回滚、存储编排…k8s简介 kubernetes俗称k8是用于自动部署扩缩和管理容器化应用程序的开源系统它将组成应用程序的容器组合成逻辑单元便于管理和服务发现。
k8s的作用 自动化上线和回滚、存储编排、自动装箱、ipv4和ipv6双协议、自我修复、服务发现与负载均衡、secret和配置管理、批量执行、水平扩缩、为扩展性设计 k8s核心组件 etcd分布式高性能数据库key-value的形式存储节点上部署的容器信息等 api-server资源操作入口提供认证、授权、访问控制、api注册和发现等机制 controller manager负责维护集群状态、故障检测、自动扩展、滚动更新等 scheduler负责资源的调度按照预定的调度策略将pod调度到相应的节点上 kubelet负责维护容器的生命周期和CVI、CNI的管理 kubectl在master节点上对k8s集群运行命令
Pod k8s本身是以容器运行在目标机器上每个k8s节点被称为Nodek8s集群是一组node机器组成的k8s不直接无操作容器而是提供了一个pod组件封装了一组容器容器都被pod管理。 Pod是 K8s的最小的可部署的计算单元它是Kubernetes创建和管理的。一个Pod通常包含一个或者多个容器这些容器会共享存储、网络资源和运行配置 可以通过一个YAML或JSON格式的配置文件定义Pod属性包括容器镜像、环境变量、存储卷等。然后使用Kubernetes API或命令行工具如kubectl来创建和管理Pods。 k8s组件创建pod流程
在master节点写yaml描述对容器的运行要求创建pod的要求使用kubectl命令创建应用这个资源的描述文件开始k8s组件交互,把命令发给api-serverapi-server 利用本地https证书验证 kubectl请求是否被允许api-server 将pod创建信息记录到etcd数据库中如应用的镜像版本、容器名、端口等api-server通知scheduler准备pod的调度scheduler调度从etcd中获取pod的部署信息判断出一个合适的node节点准备部署pod scheduler告知api-server决定部署pod的node节点apiserver将部署信息写入etcd中api-server通知远程具体的机器去读取etcd中的信息根据这些信息创建pod YAML语言介绍 YAML语言是一个类似xml、json的标志性语言以数据为中心。
格式如下
#yml格式
user:age: 18address: zhengzhou YMAL语法
大小写敏感使用空格缩进表示层级关系高版本可以使用tab 缩进空格数不重要但是同层级的元素需要相同左对齐 # 表示注释
数据类型 纯量单个的不可再分的值字符串、布尔、整数、浮点、null、时间、日期 对象键值对的集合又称为映射mapping/哈希hash/字典dictionary 数组一组按照次序排列的值又称为序列sequence/列表list
纯量 布尔true 或false 整型整数例如123、345等 浮点小数例如3.1415926 null不写值 或者写建议 日期必须使用iso 8601格式即yyyy-mm-dd 时间必须使用iso 8601格式即2024-01-03T14:47:0008:00 时间和日期用T链接后边是时区 字符串直接写值如果有特殊符号必须使用单/双引号包裹
对象:
#yml格式对象格式1 -- 推荐
user:age: 18address: zhengzhou#yml格式对象格式2
user: {age: 18,address: zhengzhou}
数组
格式1 -- 推荐
address: -zhengzhou-beijing
--格式2。
address: {zhengzhou,beijing}
一个yml文件如果想写两段yml内容中间使用 --- 隔开
address: -zhengzhou-beijing---address: -zhengzhou-beijing
资源管理方式 1.命令式对象管理直接使用命令操作Kubernetes资源 例如kubectl run nginx-pod --imagenginx:1.17.1 --port80
kubectl 固定写法 要执行的指令--imagenginx:1.17.1 --port80 要干的事
2.命令式对象配置通过命令配置和配置文件去操作Kubernetes资源 例如kubectl create/patch -f nginx-pod.yaml
kubectl固定写法 create/patch要执行的指令nginx-pod.yaml通过配置文件执行
3.声明式对象配置通过apply命令和配置文件去操作Kubernetes资源
kubectl apply -f nginx-pod.yaml
对比第二条apply 只能更新或创建资源
类型操作对象适用环境优点缺点命令式对象管理对象测试简单只能操作对象无法审计跟踪命令式对象配置 文件开发可以审计跟踪项目较大时配置文件会很多操作麻烦声明式对象配置目录开发支持目录操作意外情况下难以调试 命令式对象管理 kubectl是Kubernetes集群的命令行工具通过它能够对集群本身进行管理并能够在集群上进行容器化应用的安装部署 语法kubectl [command] [type] [name] [flags] command:指定要对资源的操作例如create get delete type指定资源类型deployment、pod、service name指定资源的名称名称大小写敏感 flags指定额外可选参数
案例 #创建一个名为 dev的namespace 名称为 kubectl create ns dev #查看已有namespace kubectl get ns #在dev中创建一个nginx 的应用pod kubectl run pod --imagenginx:1.17.1 -n dev #查看 dev中的pod kubectl get pod -n dev #查看创建过程 kubectl describe pods pod -n dev #删除namespace dev kubectl delete ns dev 命令式对象配置
1.创建一个nginxpod.yaml,内容如下
apiVersion: v1
#创建一个 namespcae
kind: Namespace
#namespcae 名称为dev
metadata: name: dev ---apiVersion: v1
#创建一个 pod
kind: Pod
#pod名称为 nginxpod 在dev的namespace中
metadata: name: nginxpodnamespace: dev
# pod 中容器的名字是nginx-containers 镜像为nginx:1.17.1
spac:
# 注意containers 是一个数组 name和image是一组数据注意对齐containers:- name: nginx-containersimage: nginx:1.17.1
2.使用create 创建资源
kubectl create -f nginxpod.yaml 3.可以使用delete 和配置文件删除 namespace 和 pod
kubectl delete -f nginxpod.yaml 声明式对象配置 使用声明式对象配置就是使用apply描述一个资源的最终状态yaml中定义的状态
kubectl apply -f yaml文件 使用apply操作资源 如果资源不存在就创建等同于 kubectl create 如果资源已存在就更新相当于 kubectl patch
root***:/usr/local/k8code# kubectl delete -f nginxpod.yaml
namespace dev deleted
pod nginxpod deleted
root***:/usr/local/k8code# kubectl get ns dev
Error from server (NotFound): namespaces dev not found
##资源不存在时会直接创建
root***:/usr/local/k8code# kubectl apply -f nginxpod.yaml
namespace/dev created
pod/nginxpod created
##资源已存在但是资源文件没有更新
root***:/usr/local/k8code# kubectl apply -f nginxpod.yaml
namespace/dev unchanged
pod/nginxpod unchanged
##做了资源文件更新后可以看到 pod/nginxpod configured 配置有变更
root***:/usr/local/k8code# vi nginxpod.yaml
root***:/usr/local/k8code# kubectl apply -f nginxpod.yaml
namespace/dev unchanged
pod/nginxpod configured
##使用create 操作已存在资源会抛出错误
root***:/usr/local/k8code# kubectl create -f nginxpod.yaml
Error from server (AlreadyExists): error when creating nginxpod.yaml: namespaces dev already exists
Error from server (AlreadyExists): error when creating nginxpod.yaml: pods nginxpod already exists