kubernetes学习总结(36)——kubernetes本地运行的四种方法(代码片段)

科技D人生 科技D人生     2022-12-01     409

关键词:

前言

Kubernetes 是一个开源的容器编排平台。它由 Google 开发,为自动化部署、扩展和管理容器化应用提供了一个开源系统。虽然大多数人在云环境中运行 Kubernetes,但在本地运行 Kubernetes 集群不仅是可能的,它还至少有两个好处:

  • 在决定使用 Kubernetes 作为主要平台部署应用之前,你可以快速试用它。
  • 在将任何东西推送到公共云之前,你可以将其设置为本地开发环境,从而实现开发环境和生产环境之间的分离。

无论你的情况如何,将本地 Kubernetes 环境设置为你的开发环境都是推荐的选择,因为这种设置可以创建一个安全而敏捷的应用部署流程。幸运的是,有多个平台可以让你尝试在本地运行 Kubernetes,它们都是开源的,并且都是 Apache 2.0 许可。

  • Minikube 的主要目标是成为本地 Kubernetes 应用开发的最佳工具,并支持所有适合的 Kubernetes 特性。
  • kind 使用 Docker 容器“节点”运行本地 Kubernetes 集群。
  • CodeReady Containers (CRC)用来管理为测试和开发目的优化的本地 OpenShift 4.x 集群。
  • Minishift 通过在虚拟机 (VM) 内运行单节点的 OpenShift 集群,帮助你在本地运行 OpenShift 3.x 集群。

Minikube

 Minikube 是在本地计算机上运行 Kubernetes 环境的最知名、最流行的选择。无论你使用什么操作系统, Minikube 的文档都会为你提供一个简单的 安装 指南。因为 Minikube 是一个开源项目,你可以对它的 源代码 做贡献。一般来说,安装 Minikube 只需运行两条命令:

$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-PLATFORM-amd64
$ sudo install minikube-PLATFORM-amd64 /usr/local/bin/minikube

 Minikube 可在 Linux、macOS 或 Windows 上快速设置本地 Kubernetes 集群,其功能如下: 

  • 支持最新的 Kubernetes 版本(包括 6 个以前的小版本)
  • 跨平台(Linux、macOS、Windows)
  • 以虚拟机、容器或裸机的形式部署
  • 支持多个容器运行时(CRI-O、containerd、Docker)
  • 用于快速推送镜像的 Docker API 端点
  • 负载均衡器、文件系统挂载、FeatureGates 和其他高级功能
  • 用于轻松安装 Kubernetes 应用的附加组件

kind

 kind 的开发者将其描述为“一个使用 Docker 容器‘节点’运行本地 Kubernetes 集群的工具”。它是为测试 Kubernetes 而设计的,但也可能用于本地开发或持续集成。kind 支持:

  • 多节点(包括高可用性)集群
  • 从源码构建 Kubernetes 版本
  • Make/Bash/Docker 或 Bazel,以及预发布构建
  • Linux、MacOS 和 Windows

此外,kind 是一个经过云原生计算基金会(CNCF)认证的 Kubernetes 合规安装程序。因为它是开源的,你可以在它的 GitHub 仓库中找到 kind 的 源码 。

CodeReady Container (CRC)

如果你想在本地尝试最新版本的 OpenShift,可以尝试红帽的 CodeReady Containers (CRC)。CRC 将一个最小的 OpenShift 4.x 集群带到你的本地计算机上,为开发和测试目的提供一个最小的环境。CRC 主要针对开发者的桌面使用。你可以在 GitHub 上找到 CodeReady Container 的 源码 ,也是在 Apache 2.0 许可下提供的。

Minishift

Minishift 项目帮助你在本地用 OKD 在虚拟机内的单节点 OpenShift 集群 运行一个版本的 OpenShift 。你可以用它来 尝试 OpenShift ,或者在你的本地主机上为云开发。和这个列表中的其他工具一样,Minishift 也是开源的,你可以在 GitHub 上访问它的 源码 。

kubernetes学习总结(36)——kubernetes本地运行的四种方法(代码片段)

前言Kubernetes是一个开源的容器编排平台。它由Google开发,为自动化部署、扩展和管理容器化应用提供了一个开源系统。虽然大多数人在云环境中运行Kubernetes,但在本地运行Kubernetes集群不仅是可能的,它还至少有两个... 查看详情

kubernetes学习总结-基本概念

...件  -doctor:负责本机的容器创建和管理工作3.Pod:  Kubernetes最基本概念  -Pause容器作为根容器,代表整个容器的ip和volume存储4.Label(标签):  -实现分组管理功能5.LabelSelector:  使用场景:  -监控Pod的副本数量,kube-Con... 查看详情

kubernetes学习总结synopsis

同类产品dockercompose、dockerswarm、dockermachine、mesos、marathonKubernetes项目地址https://github.com/kubernetes/kubernetes/releasesSchema?核心组件:1)APIserver:接收、分析用户请求,并处理用户请求2)Scheduler:调度资源(通过初选、优选、选定三个阶... 查看详情

kubernetes学习总结(28)——kubernetes常见问题总结(代码片段)

如何删除不一致状态下的rc、deployment、service在某些情况下经常发现kubectl进程挂起现象,然后在get时候发现删了一半而另外的删除不了[root@k8s-master ~]# kubectl get -f fluentd-elasticsearch/NAME DESIRED CURRENT READY AGErc/elasticsearch-logging-... 查看详情

kubernetes学习总结(18)——kubernetes容器网络

前言在Kubernetes 中要保证容器之间网络互通网络至关重要。Kubernetes 本身并没有实现容器网络而是通过插件化的方式自由接入,容器网络接入需要满足如下基本原则:pod无论运行在任何节点都可以互相直接通信,而不... 查看详情

kubernetes学习总结(29)——使用kubeadm部署kubernetes1.24详细步骤总结(代码片段)

前言kubeadm是Kubernetes官方提供的用于快速安部署Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新... 查看详情

kubernetes学习总结(31)——kubernetes为何需要istio?

一、ServiceMesh是什么?“Aservicemeshisadedicatedinfrastructurelayerforhandlingservice-to-servicecommunication.“——WilliamMorgan。erviceMesh是一个专注于处理服务间通信的基础设施层。云原生应用有着复杂的服务拓扑,而ServiceMesh保证请求可以... 查看详情

kubernetes学习总结(31)——kubernetes为何需要istio?

一、ServiceMesh是什么?“Aservicemeshisadedicatedinfrastructurelayerforhandlingservice-to-servicecommunication.“——WilliamMorgan。erviceMesh是一个专注于处理服务间通信的基础设施层。云原生应用有着复杂的服务拓扑,而ServiceMesh保证请求可以... 查看详情

kubernetes学习总结(32)——kubernetes的架构原理简单总结

一、Master节点与 Node节点通讯原理Master节点启动时,会运行一个 kube-apiserver 进程,它提供了集群管理的API接口,是集群内各个功能模块之间数据交互和通信的中心枢纽,并且它页提供了完备的集群安全机制。在N... 查看详情

kubernetes学习总结(32)——kubernetes的架构原理简单总结

一、Master节点与 Node节点通讯原理Master节点启动时,会运行一个 kube-apiserver 进程,它提供了集群管理的API接口,是集群内各个功能模块之间数据交互和通信的中心枢纽,并且它页提供了完备的集群安全机制。在N... 查看详情

kubernetes学习总结(14)——kubernetes实用命令总结(代码片段)

一、Pods1、Getallpodsinthecurrentnamespacekubectlgetpods2、Getpodsinallnamespaceskubectlgetpods--all-namespaces3、Getpodswithmoredetailskubectlgetpods-owide4、Gettheyamlforapodkubectlgetpod<pod>-oyaml5、Inspectapodkubectldescribepods<pod>6、Getpodssortedbyametrickubectlgetpods--s... 查看详情

kubernetes学习总结(14)——kubernetes实用命令总结(代码片段)

一、Pods1、Getallpodsinthecurrentnamespacekubectlgetpods2、Getpodsinallnamespaceskubectlgetpods--all-namespaces3、Getpodswithmoredetailskubectlgetpods-owide4、Gettheyamlforapodkubectlgetpod<pod>-oyaml5、Inspectapodkubectldescribepods<pod>6、Getpodssortedbyametrickubectlgetpods--s... 查看详情

kubernetes学习总结(18)——kubernetes容器网络(代码片段)

前言在Kubernetes 中要保证容器之间网络互通网络至关重要。Kubernetes 本身并没有实现容器网络而是通过插件化的方式自由接入,容器网络接入需要满足如下基本原则:pod无论运行在任何节点都可以互相直接通信,而不... 查看详情

kubernetes学习总结——kubernetes常见面试题汇总

简述etcd及其特点etcd是CoreOS团队发起的开源项目,是一个管理配置信息和服务发现(servicediscovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于Go语言实现。特点:简单... 查看详情

kubernetes学习总结(26)——kubernetes网络模型基础指南(代码片段)

前言Kubernetes是为运行分布式集群而建立的,分布式系统的本质使得网络成为Kubernetes的核心和必要组成部分,了解Kubernetes网络模型可以使你能够正确运行、监控和排查应用程序故障。网络是非常复杂的,拥有许多概念... 查看详情

kubernetes学习总结(17)——kubernetes快速入门需要掌握的知识点总结(代码片段)

一、DockerDocker是基于操作系统的沙盒技术,使得用户更简单和完整的去打包自己的应用。docker底层是基于Linux的操作系统级别的虚拟化技术LXC实现;LXC是通过CGroup实现了虚拟化资源管理,用来保证应用资源的隔离和应... 查看详情

kubernetes学习总结(27)——kubernetes安装redis集群的两个方案(代码片段)

一、自定义yaml文件安装背景在Kubernetes中部署Redis集群面临挑战,因为每个Redis实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色。为此,需要结合使用KubernetesStatefulSets和PersistentVolumes实现。Redis集群... 查看详情

kubernetes学习总结(22)——应用程序迁移到kubernetes应该注意些什么?

...实现更自动化基础设施的关键,而将应用程序迁移到Kubernetes是一个重大步骤。根据Canonical的数据,只有大约15%的企业完全使用Kubernetes来运行应用程序。大约同样比例的人仍在使用纯粹以虚拟机为中心的基础设施,而... 查看详情