首页 > 其他分享 >docker和k8s的区别

docker和k8s的区别

时间:2024-02-05 11:15:55浏览次数:28  
标签:容器 kubectl get -- 区别 docker k8s pod

docker是一个开源的应用容器引擎,开发者可以打包他们的应用以及依赖到一个容器中,发布到流行的liunx系统上,或者实现虚拟化。

k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等。

一、虚拟化角度:

 传统的虚拟技术,在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。

Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。每个集群有多个节点,每个节点可,我们的kuberbete就是管理这些应用程序所在的小运行环境(container)而生。

二、部署角度:

  传统方式是将所有应用直接部署在同一个物理机器节点上,这样每个App的依赖都是完全相同的,无法做到App之间隔离,当然,为了隔离,我们也可以通过创建虚拟机的方式来将App部署到其中,但这样太过繁重,故比虚拟机更轻便的Docker技术出现,现在我们通过部署Container容器的技术来部署应用,全部Container运行在容器引擎上即可。以kubernetes为代表的容器集群管理系统,我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。另外,kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

通过bash获得pod中某个容器的TTY,相当于登录容器

kubectl exec -it -n bash

kubectl exec 进入pod后,exit退出pod (ctrl+c也可以?)

在pod外执行容器命令

命令行,创建一个test文件:

kubectl exec -it -c -n
-- touch /usr/local/test

kubectl常用命令总结

kubectl 查看 K8s 内节点、Pod 资源使用情况

kubectl describe node 查看 Pod 在节点上的资源分配情况(Request、Limits)
kubectl top node 查看节点的资源使用情况
kubectl top pod 查看 Pod 资源使用情况
kubectl get pod -o wide |grep $node 查看指定 node 上运行的所有 pod
kubectl top pod |grep -E “$podname1|$podname2|…” 查看一个 pod 或几个 pod 的资源使用情况
kubectl get - 列出一个或多个资源

查看集群状态信息

kubectl cluster-info

查看集群状态

kubectl get cs

以纯文本输出格式列出所有 pod,并包含附加信息(如节点名)。

kubectl get pods -o wide
kubectl get pods -n mynamespace -o wide #-n namesapce的
kubectl get pods -A -o wide #-A 所有namesapce的

查看集群节点信息

kubectl get nodes

查看集群命名空间

kubectl get ns

查看指定命名空间的服务

kubectl get svc -n kube-system

以纯文本输出格式列出所有 pod。

kubectl get pods

列出在节点 server01 上运行的所有 pod

kubectl get pods --field-selector=spec.nodeName=server01

以纯文本输出格式列出具有指定名称的副本控制器。提示:您可以使用别名 'rc' 缩短和替换 'replicationcontroller' 资源类型。

kubectl get replicationcontroller

以纯文本输出格式列出所有副本控制器和服务。

kubectl get rc,services

以纯文本输出格式列出所有守护程序集,包括未初始化的守护程序集。

kubectl get ds --include-uninitialized

kubectl describe - 显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。

kubectl describe nodes #显示名称为 的节点的详细信息。

显示名为 的 pod 的详细信息。

kubectl describe pods/

显示由名为 的副本控制器管理的所有 pod 的详细信息。

记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。

kubectl describe pods

描述所有的 pod,不包括未初始化的 pod

kubectl describe pods --include-uninitialized=false

说明: kubectl get 命令通常用于检索同一资源类型的一个或多个资源。 它具有丰富的参数,允许您使用 -o 或 --output 参数自定义输出格式。您可以指定 -w 或 --watch 参数以开始观察特定对象的更新。 kubectl describe 命令更侧重于描述指定资源的许多相关方面。它可以调用对 API 服务器 的多个 API 调用来为用户构建视图。 例如,该 kubectl describe node 命令不仅检索有关节点的信息,还检索在其上运行的 pod 的摘要,为节点生成的事件等。

kubectl delete -删除资源。

delete命令

kubectl delete` - 从文件、stdin 或指定标签选择器、名称、资源选择器或资源中删除资源。

使用 pod.yaml 文件中指定的类型和名称删除 pod。

kubectl delete -f pod.yaml

删除标签名= 的所有 pod 和服务。

kubectl delete pods,services -l name=

删除所有具有标签名称= 的 pod 和服务,包括未初始化的那些。

kubectl delete pods,services -l name= --include-uninitialized

删除所有 pod,包括未初始化的 pod。

kubectl delete pods --all

kubectl exec 进入容器命令

kubectl exec - 对 pod 中的容器执行命令。与docker的exec命令非常类似

从 pod 中获取运行 'date' 的输出。默认情况下,输出来自第一个容器。

kubectl exec date

运行输出 'date' 获取在容器的 中 pod 的输出。

kubectl exec -c date

获取一个交互 TTY 并运行 /bin/bash 。默认情况下,输出来自第一个容器。

kubectl exec -ti /bin/bash

logs命令

kubectl logs - 打印 Pod 中容器的日志。

从 pod 返回日志快照。

kubectl logs

从 pod 开始流式传输日志。这类似于 'tail -f' Linux 命令。

kubectl logs -f

Kubectl 常用命令大全
(https://www.jianshu.com/p/07455dbfd6bb)

Kubectl 常用参数分类

基础命令:create,delete,get,run,expose,set,explain,edit
create 命令:根据文件或者输入来创建资源

创建Deployment和Service资源

$ kubectl create -f demo-deployment.yaml
$ kubectl create -f demo-service.yaml
delete 命令:删除资源

根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效

$ kubectl delete -f demo-deployment.yaml
$ kubectl delete -f demo-service.yaml

也可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源

$ kubectl delete 具体的资源名称
get 命令 :获得资源信息

查看所有的资源信息

$ kubectl get all
$ kubectl get --all-namespaces

查看pod列表

$ kubectl get pod

显示pod节点的标签信息

$ kubectl get pod --show-labels

根据指定标签匹配到具体的pod

$ kubectl get pods -l app=example

查看node节点列表

$ kubectl get node

显示node节点的标签信息

$ kubectl get node --show-labels

查看pod详细信息,也就是可以查看pod具体运行在哪个节点上(ip地址信息)

$ kubectl get pod -o wide

查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息

$ kubectl get svc
$ kubectl get svc -n kube-system

查看命名空间

$ kubectl get ns
$ kubectl get namespaces

查看所有pod所属的命名空间

$ kubectl get pod --all-namespaces

查看所有pod所属的命名空间并且查看都在哪些节点上运行

$ kubectl get pod --all-namespaces -o wide

查看目前所有的replica set,显示了所有的pod的副本数,以及他们的可用数量以及状态等信息

$ kubectl get rs

查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息

$ kubectl get deploy -o wide
$ kubectl get deployments -o wide
run 命令:在集群中创建并运行一个或多个容器镜像。

语法:run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

示例,运行一个名称为nginx,副本数为3,标签为app=example,镜像为nginx:1.10,端口为80的容器实例

$ kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80

  • 启动docker: systemctl start docker
  • 停止docker: systemctl stop docker
  • 重启docker: systemctl restart docker
  • 查看docker状态: systemctl status docker
  • 开机启动: systemctl enable docker
  • 查看docker概要信息: docker info
  • 查看docker总体帮助文档: docker --help
  • 查看docker命令帮助文档: docker 具体命令 --help

常用命令汇总

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BgTryouo-1660722388595)(images/image-20220410190930000.png)]

命令英文中文
attach Attach to a running container 当前 shell 下 attach 连接指定运行镜像
build Build an image from a Dockerfile 通过 Dockerfile 定制镜像
commit Create a new image from a container changes 提交当前容器为新的镜像
cp Copy files/folders from the containers filesystem to the host path 容器中拷贝指定文件或者目录到宿主机中
create Create a new container 创建一个新的容器,同 run,但不启动容器
diff Inspect changes on a container’s filesystem 查看 docker 容器变化
events Get real time events from the server 从 docker 服务获取容器实时事件
exec Run a command in an existing container 在已存在的容器上运行命令
export Stream the contents of a container as a tar archive 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history Show the history of an image 展示一个镜像形成历史
images List images 列出系统当前镜像
import Create a new filesystem image from the contents of a tarball 从tar包中的内容创建一个新的文件系统映像[对应export]
info Display system-wide information 显示系统相关信息
inspect Return low-level information on a container 查看容器详细信息
kill Kill a running container kill 指定 docker 容器
load Load an image from a tar archive 从一个 tar 包中加载一个镜像[对应 save]
login Register or Login to the docker registry server 注册或者登陆一个 docker 源服务器
logout Log out from a Docker registry server 从当前 Docker registry 退出
logs Fetch the logs of a container 输出当前容器日志信息
port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT 查看映射端口对应的容器内部源端口
pause Pause all processes within a container 暂停容器
ps List containers 列出容器列表

参考:https://www.cnblogs.com/fenglongyun/p/17729578.html

https://www.cnblogs.com/xiaobear/p/16660475.html

 

标签:容器,kubectl,get,--,区别,docker,k8s,pod
From: https://www.cnblogs.com/klb561/p/18007567

相关文章

  • LVS Nginx HAProxy区别
    LVS抗负载能力强,性能高,能达到F5硬件的60%,对内存和cpu资源消耗比较低工作在四层仅作分发之用,通过vrrp协议转发,具体流量由linux内核处理,没有流量的产生稳定性、可靠性好,自身有完整的双机热备方案,如LVS+keepalived应用范围比较广,可以对所有应用做负载均衡配置性比较低,减少人为出错的概......
  • 一句话总结Docker与K8S的关系
    一句话总结:Docker只是容器的一种,它面向的是单体,K8S可以管理多种容器,它面向的是集群,Docker可以作为一种容器方案被K8S管理。下文继续具体介绍。1、容器的核心概念介绍这几个核心概念:OCI、CR、Runc、Containerd、CRI。1.1、容器运行规范容器运行规范OCI(OpenContainerInitiat......
  • Docker - 离线安装
    Docker-离线安装环境:centos8,docker25 1.安装包官方地址:https://download.docker.com/linux/static/stable/x86_64/   2.解压代码如下(示例):tar-zxvfdocker-18.06.3-ce.tgz  3.将解压出来的docker文件复制到/usr/bin/目录下注:不可修改目录,其中runc文......
  • 1.Dockerfile-nginx安装配置
    1.编译安装脚本mkdir  /data/docker/dockerfile/nginxcd  /data/docker/dockerfile/nginx拷贝nginx.1.24.0.tar.gz到这个目录下vimDockerfile,注意文件名必须是这个:FROMcentos:latest1MAINTAINERthisisnginxdockerfile#安装软件RUNyum-yinstallmakez......
  • 在K8S中,K8S本身优势、适应场景及其特点有什么?
    Kubernetes(简称K8s)作为容器编排领域的事实标准,具有以下显著优势、适应场景及其特点:优势:微服务架构支持:Kubernetes非常适合部署和管理基于微服务的应用程序,每个服务可以独立运行在Pod中,并通过Service进行发现和通信。自动化部署与扩展:自动化的滚动更新、回滚以及水平扩展(HPA......
  • 在K8S中,常见部署K8S方式有哪些?
    在Kubernetes(K8s)中部署集群的方式多种多样,根据环境和需求的不同,常见的部署方式包括:手动部署从零开始手动配置每个节点上的所有组件。这包括安装Docker或容器运行时、设置网络插件、安装etcd集群、配置kube-apiserver、kube-controller-manager、kube-scheduler等控制面组件,并......
  • 在K8S中,K8S是如何实现集群管理的?
    在Kubernetes(简称K8s)中,集群管理主要涉及以下几个关键方面:分布式架构:Kubernetes采用的是主从式(Master-Worker)的分布式架构。其中,Master节点包括了控制平面组件,如kube-apiserver(提供API服务)、etcd(存储集群状态数据)、kube-scheduler(负责容器调度)、kube-controller-manager(运行各......
  • 在K8S中,Kubernetes与Docker的关系?
    在Kubernetes(简称K8s)与Docker之间,存在一种互补和依赖的关系:互补关系:Docker:提供容器化解决方案,允许开发人员将应用及其依赖打包到可移植的容器镜像中。Docker主要负责构建、运行和分发这些容器。Kubernetes:是一个容器编排系统,它的目标是自动化部署、扩展以及管理容器化的应用......
  • 在K8S中,Minikube、Kubectl、Kubelet是什么?
    在Kubernetes(简称K8s)生态系统中,Minikube、kubectl和kubelet是三个不同的组件,各自扮演着不同的角色:Minikube:Minikube是一个工具,用于在单个节点上部署一个本地的Kubernetes集群。这对于开发者在本地开发环境进行Kubernetes应用测试和调试非常有用。它能够在个人计算机上启动一个......
  • PostMessage与SendMessage区别
     PostMessage发送的消息是发送到应用程序的消息队列里,看d箭头SendMessage发送的消息是直接发送到应用程序的消息处理函数中    ......