如何通俗的了解kubernetes容器编排?

  • 回答 (10)
  • 关注 (1)
  • 查看 (1633)

总听人说kubernetes,k8s,但是我小白不懂啊!那位大神能简单的讲解一下,让我这种小白都能明白的问题!

742512027cdb742512027cdb提问于
MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。回答于

虽然对k8s理论不熟,但是我可以给大家写写如何部署Kubernetes,在你的电脑上运行Kubernetes

Kubernetes 是编配平台的首选。在开发过程中,您不妨在个人电脑上运行 Kubernetes,以便在本地启动和调试应用程序。本文提供了两种在 Mac OS X 机器本地运行 Kubernetes 的方法:常用的 MinikubeDocker for Mac 中新引入的 Kubernetes 支持。其他平台的操作指南可登录 Minikube 和 Docker 网站查找。我们开始吧!

安装 kubectl

Kubectl 是对 Kubernetes 集群运行命令的 CLI 命令行界面 (CLI)。首先安装:

在 Mac OS X 上安装 kubectl:

brew install kubernetes-cli

如果已经安装 kubectl,您可能需要对其进行升级:

brew upgrade kubernetes-cli

打印版本信息:

$ kubectl version --client --short=true
Client Version: v1.8.5

默认情况下,kubectl version 命令会打印客户端和服务器版本。 --client 确保只打印客户端版本,因为此时没有正在运行的集群。 --short 选项允许您仅打印版本号。

现在已经安装了 kubectl,我们来看一下这两种可以在本地机器上运行 Kubernetes 集群的方法。

使用 Minikube 设置 Kubernetes 集群

在笔记本电脑上,Minikube 在虚拟机 (VM) 内部运行单节点 Kubernetes 集群,为有兴趣使用 Kubernetes 的用户提供本地开发和测试环境。

Minikube VM 使用 VirtualBox 进行预置。如果您的机器上尚未安装 VirtualBox,则需要先执行以下操作:

brew cask install virtualbox

现在安装 Minikube:

brew cask install minikube

如果已经安装了 Minikube,可以使用以下命令进行升级:

brew cask reinstall minikube

查看 Minikube 的版本:

~ $ minikube version
minikube version: v0.24.1

启动 Minikube:

~ $ minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Downloading Minikube ISO
140.01 MB / 140.01 MB [============================================] 100.00% 0s
Getting VM IP address...
Moving files into cluster...
Downloading localkube binary
148.25 MB / 148.25 MB [============================================] 100.00% 0s
0 B / 65 B [----------------------------------------------------------] 0.00%
65 B / 65 B [======================================================] 100.00% 0sSetting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.

该命令会下载 ISO 文件,创建 VM 并预置 Kubernetes 组件,以启动单节点集群。默认情况下,集群配置和凭证存储在 ~/.kube/config 文件中。可以使用以下命令查看不同集群的环境:

~ $ kubectl config get-contexts
CURRENT  NAME       CLUSTER     AUTHINFO NAMESPACE
*        minikube   minikube    minikube

如您所见,到目前为止我们只创建了一个 Kubernetes 集群。如果已经创建了多个集群,会在该命令下全部列出。

第一列中的 * 也表示这是当前环境;所有的 kubectl 命令将指向该集群。例如,您可以查看集群中的节点:

~ $ kubectl get nodes
NAME     STATUS ROLES   AGE   VERSION
minikube Ready  <none>  1m    v1.8.0

kubectl version 命令现在可以用于打印客户端和服务器版本:

~ $ kubectl version --short=true
Client Version: v1.8.5
Server Version: v1.8.0

所有常用的 kubectl 命令现在都可以在该集群中应用。

使用 Docker for Mac 设置 Kubernetes 集群

Docker for Mac/Docker for Windows 可帮助有兴趣使用 Docker 的开发人员迈出第一步。可以下载 Docker for Mac 的 Stable (稳定) 或 Edge (优势) 版。Stable (稳定) 版已经过全面检验和测试,并附带最新的 Docker GA 版本。正如其名,Edge (优势) 版提供最新的、最先进的功能。此类功能中的一项已作为 Docker CE Edge (优势) 版 17.12.0-Ce-rc2-mac41内部测试 的一部分引入,它支持开发和测试所用的单节点 Kubernetes 集群。

也就是说,无需 Minikube 等其他工具,您即可使用相同的 Docker for Mac 来创建 Docker 映像、启用 Kubernetes 集群并部署 pod。截至本文发表时,仅 Q1 中的 Docker for Mac 和 Docker for Windows 支持此功能。(Docker 企业版也支持 Kubernetes。)

我们来了解一下如何使用 Docker for Mac 设置本地 Kubernetes 集群。

要从 Docker for Mac 访问 Kubernetes,您需要注册 Docker Beta 项目。在您的 Docker ID 被批准用于 Kubernetes 访问之后,您会收到一个链接,供您下载并安装 Docker for Mac Edge (优势) 版。确保 “关于 Docker” 显示为 12.12.0-ce-rc2-mac31 或更高版本。现在,在 “首选项” 对话框中会出现一个新的选项卡,用于配置 Kubernetes 集群。

选择 “Enable Kubernetes”(启用 Kubernetes),然后点击 “Apply & Restart”(应用并重启), 启动一个单节点 Kubernetes 集群。

稍后,除了 Docker 之外,状态栏也会更新,说明 Kubernetes 正在运行。

还将在 ~/.kube/config的默认文件中为集群创建一个配置。kubectl CLI 会显示配置,如下所示:

~ $ kubectl config get-contexts
CURRENT  NAME               CLUSTER                    AUTHINFO            NAMESPACE
*        minikube           minikube                   minikube
         docker-for-desktop docker-for-desktop-cluster docker-for-desktop

更改 kubectl 使用的环境,验证当前环境,并获取节点列表:

~ $ kubectl config use-context docker-for-desktop
Switched to context "docker-for-desktop".
~ $ kubectl config get-contexts 
CURRENT NAME               CLUSTER                     AUTHINFO NAMESPACE 
*       docker-for-desktop docker-for-desktop-cluster  docker-for-desktop 
        minikube           minikube                    minikube 
~ $ kubectl get nodes 
NAME               STATUS  ROLES    AGE   VERSION 
docker-for-desktop Ready   master   23h   v1.8.2

现在, docker version 命令将 Kubernetes 显示为编配器:

~ $ docker version
Client:
 Version: 17.12.0-rc1-kube_beta
 API version: 1.35
 Go version: go1.9.2
 Git commit: a36c9215a7f8d5da5231d2cca353375bcb27efe3
 Built: Thu Dec 7 17:33:49 2017
 OS/Arch: darwin/amd64
 Orchestrator: kubernetes
 
Server:
 Engine:
  Version: 17.12.0-ce-rc2
  API version: 1.35 (minimum version 1.12)
  Go version: go1.9.2
  Git commit: f9cde63
  Built: Tue Dec 12 06:45:30 2017
  OS/Arch: linux/amd64
  Experimental: true

注意: Kubernetes 显示为编配器,与默认的 swarm相反。

您现在只需一个工具即可拥有最新的 Kubernetes 计划程序和最新的 Docker 运行时!

我们使用 kubectl version 命令查看客户端和服务器版本:

~ $ kubectl version --short=true
Client Version: v1.8.2
Server Version: v1.8.0

再重复一次,所有常用的 kubectl 命令都可以在此集群上运行。除了使用所有熟悉的 kubectl 命令外,您还可以将 Docker Compose 堆栈部署为最佳 Kubernetes 应用程序。

但是,对于生产环境,我推荐您使用腾讯云容器实例服务,容器实例服务(Container Instance Service , CIS)可以帮您在云上快捷、灵活的部署容器,让您专注于构建程序和使用容器而非管理设备上。无需预购 CVM,您就可以在几秒内启动一批容器来执行任务。您也可以通过 kubernetes API 把已有kubernetes 集群的 pod 调度到 CIS 上以处理突增业务。CIS 根据您实际使用的资源计费,可以帮您节约计算成本。使用 CIS 可以极大降低您部署容器的门槛,降低您执行 batch 型任务或处理业务突增的成本。更多Linux教程请前往腾讯云+社区学习更多知识。

参考文献:《OpenSource | 在你的电脑上运行Kubernetes》

回答过的其他问题

购买的一个建站主机怎么开启伪静态和gd库?

MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。
可以下载 wamp集成环境来支持。 GD库: php.ini文件里这个字段 ;extension=php_gd2.dll (去掉分号 用来支持GD库的) 伪静态: 第一步:打开wamp安装目录里找到Apache安装目录下的conf目录中的httpd.conf这个文件(比如我的是...... 展开详请

5G无线通信与4G的典型区别有哪些?用了哪些新技术?

MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。
5G相比4GTurbo码。 5G相比4G新加入的一些技术: mmWave:也就是毫米波,频率大约为。由于3Ghz以下的频段已经使用殆尽,没有多余的频段可供5G来使用,而且5G需要的带宽动不动就几百M,所以只能往高频方向发展了。但是频率越高,损耗越大,这就带来了一个问题,随着频率的...... 展开详请

AI在智能家居行业的现状及趋势?

MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。
近几年来,智能音箱、智能电视、智能管家机器人等等陆续出现,并在智能家居领域占有着重要的地位。这些产品或多或少都与AI有着一定的联系。语音控制使得这些产品使用更加便捷。机器学习使得这些产品能够适应 更多的场合,能够更大程度地满足人们的需求。总的来说,AI是推动智能家居进步的最大动力...... 展开详请

如何实现基于用户画像大数据的电商防刷架构?

MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。
腾讯内部防刷的架构图 [图片] 1.风险学习引擎 风险学习引擎:效率问题。由于主要的工作都是线下进行,所以线上系统不存在学习的效率问题。线上采用的都是C++实现的DBScan等针对大数据的快速聚类算法,基本不用考虑性能问题。 风险学习引擎:采用了黑/白双分类器风险判定机制。之所...... 展开详请

企业网站通过了ICP备案,还需要通过公安备案吗?

MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。

公安备案是自选的,你可以选择备案也可以选择不备案。

常见NoSQL数据库的应用场景是怎么样的?

MOISTG数学本科在修,顺带旁听计算机智能科学。喜欢计科,美食,旅游。一个走错路的文科生。

我个人用到过的两种: 1 MongoDB 存储系统中实体对象,因其数据结构的弱约束,应用于快速迭代的产品开发中非常方便。其分片、集群支持很好,方便扩展。 2 Redis KV高速缓存,高级的数据结构支持,适应于不同需求。

所属标签

扫码关注云+社区

领取腾讯云代金券