kubernetes (k8s)的使用

编程入门 行业动态 更新时间:2024-10-26 22:19:54

<a href=https://www.elefans.com/category/jswz/34/1771154.html style=kubernetes (k8s)的使用"/>

kubernetes (k8s)的使用

一、kubernetes 简介 

谷歌2014年开源的管理工具项目,简化微服务的开发和部署。
提供功能:自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics监控、日志监控、弹性和容错、API管理、服务安全等。
官网:/
GitHub地址:

1.1、Kubernetes 主要功能 

1.自我修复:当某个容器崩溃时,能够在1秒左右迅速启动新的容器2.弹性伸缩:根据需要,自动对集群中正在运行的容器数量进行调整3.服务发现:服务可以通过自动发现的形式找到它所依赖的服务4.负载均衡:当一个服务起动了多个容器,能够自动实现请求的负载均衡5.版本回退:当发现新发布的程序版本有问题,可以立即回退到原来的版本6.存储编排:根据容器自身的需求自动创建存储卷,Pod中容器之间共享数据

1.2、Kunbernetes 主要概念

1.Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控2.Node:工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行3.Pod:kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器4.Controller:控制器,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等5.Service:pod对外服务的统一入口,下面可以维护者同一类的多个pod6.Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签7.NameSpace:命名空间,用来隔离pod的运行环境

1.3、组件  

一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。

1.Master:负责集群的决策管理2.ApiServer : 资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制3.Scheduler : 负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上4.ControllerManager : 负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等5.Etcd:负责存储集群中各种资源对象的信息6.Node:负责为容器提供运行环境7.Kubelet : 负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器8.KubeProxy : 负责提供集群内部的服务发现和负载均衡9.Docker : 负责节点上容器的各种操作

1.3.1、节点组成 

1.master 主节点 

Etcd:整个集群的数据库,存储集群的状态数据、配置、节点等,采用 Raft 协议。
API-server:连其它组件、Etcd,提供各类 api 处理,和 Node节点 通信等。对外提供操作和获取 k8s 集群资源的 API。
Scheduler:在 k8s 集群中做调动决策,负责资源的调度、打分、分配资源。
Controller-Manager:控制各类 Controller,观察、维护集群的状态,故障检测、自动扩展、滚动更新等,协调让实际状态和预期状态达到一致。

2.work 从节点

Docker:负责容器创建和管理。
Kubelet:管理容器的生命周期,与 master 节点交互(汇报自身情况)。
Kube-proxy:网络代理,Pod 寻址、负载均衡等。

1.4、工作流程 

1.当kubernetes启动后,master和node将自身的信息存储到etcd数据库中;2.一个服务的安装请求会首先被发送到master节点的apiServer组件;3.apiServer调用scheduler组件来决定服务安应该装到哪个node节点上;从etcd中读取各个node节点的信息;4.apiServer调用controller-manager去调度Node节点安装服务;5.kubelet接收到指令后,会通知docker,由docker来启动一个服务pod;6.访问服务要通过kube-proxy来对pod产生访问的代理,如此就可以访问集群中的服务了。

二、使用 

2.1、常用命令

# 查看命令
kubectl --help# 查询k8s集群节点
kubectl get nodes# 查看所有的pod
kubectl get pod# 查看pod详细内容
kubectl describe pod nginx-6867cdf567-ht2bz# 查看k8s 集群的信息
kubectl cluster-info# 查看当前k8s 集群的版本
kubectl version #命令形式创建一个namespace
kubectl create namespace udiannet-dev# 查询所有的namespace
kubectl get ns# 在udiannet-dev的namespace 下运行一个pod
kubectl run pod --image=nginx -n udiannet-dev# 查看udiannet-dev下的pod
kubectl get pod -n udiannet-dev# 查看该pod的详细信息(要制定namespace)
kubectl describe pod pod-864f9875b9-492tz -n udiannet-dev# 删除该pod(要指定namespace)
kubectl delete pods pod-864f9875b9-492tz -n udiannet-dev# 创建一容器镜像为 nginx 名称为 nginx-test 的 Pod 并在 8080 端口将其暴露为与Pod 同名的 Service
kubectl run nginx-test --image=nginx --port=8080 --expose

NameSpace的创建 

# 创建一个namespace
[k8s@administrator root]$ kubectl create namespace test
namespace/test created# 查看namespace
[k8s@administrator root]$ kubectl get ns
NAME                   STATUS   AGE
default                Active   3d3h
kube-node-lease        Active   3d3h
kube-public            Active   3d3h
kube-system            Active   3d3h
test                   Active   8s# 创建并运行一个nginx的Pod资源
[k8s@administrator root]$ kubectl run nginx-pod --image=nginx -n test
pod/nginx-pod created# 查看test命名空间下新创建的pod
[k8s@administrator root]$ kubectl get pod -n test
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          8s# 查看默认namespace中的资源
[k8s@administrator root]$ kubectl get pods
No resources found in default namespace.# 删除指定的pod
[k8s@administrator root]$ kubectl delete pod nginx-pod -n test
pod "nginx-pod" deleted# 删除命名空间
[k8s@administrator root]$ kubectl delete ns test
namespace "test" deleted# 查看命名空间
[k8s@administrator root]$ kubectl get ns
NAME                   STATUS   AGE
default                Active   3d3h
kube-node-lease        Active   3d3h
kube-public            Active   3d3h
kube-system            Active   3d3h# 查看某个NS,同时指定输出格式,常用格式:wide、json、yaml
[k8s@administrator ~]$ kubectl get ns default -o json
{"apiVersion": "v1","kind": "Namespace","metadata": {"creationTimestamp": "2022-03-21T09:00:52Z","labels": {"kubernetes.io/metadata.name": "default"},"name": "default","resourceVersion": "212","uid": "2c41f796-922b-426c-a5f4-78627e008e6b"},"spec": {"finalizers": ["kubernetes"]},"status": {"phase": "Active"}
}# 查看ns详情
[k8s@administrator ~]$ kubectl describe ns default
Name:         default
Labels:       kubernetes.io/metadata.name=default
Annotations:  <none>
Status:       ActiveNo resource quota.No LimitRange resource.

2.2、部署 

2.3、项目应用 

更多推荐

kubernetes (k8s)的使用

本文发布于:2023-11-15 20:29:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1605865.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:kubernetes   k8s

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!