本地 Kubernetes 集群安装0. 网络环境的准备 Kubernetes 用到的很多镜像都在 gcr.io 上,在国内访问会有困难。
这里提供两个手段:
在家庭路由器上整个科学代理,实现全局科学上网。
使用
liangyuanpeng
大佬在评论区提供的 gcr 国内镜像地址,这需要进行如下替换:
k8s.gcr.io—> lank8s.cn
gcr.io—> gcr.lank8s.cn
1. 节点的环境准备首先准备三台 Linux 虚拟机,系统按需选择,然后调整这三台机器的设置:
节点配置:
master:不低于 2c/3g,硬盘 20G
主...
如果你想从Kubernetes集群中删除节点,正确流程如下:
获取节点列表1kubectl get node
设置不可调度由于节点目前处于正常工作状态,集群中新建资源还是有可能创建到该节点的,所以先将节点设置为不可调度:
1kubectl cordon $node_name
将节点上资源调度到其他节点目前集群已经不会分配新的资源在该节点上了,但是节点还运行着现有的业务,所以我们需要将节点上的业务分配到其他节点:
1kubectl drain $node_name
注意:DaemonSet Pod 和 Static Pod 是不会在集群中其他节点重建的。
移除节点当前集群中已...
在开发工作流中使用 Docker 可以极大提高生产力,它消除了"它在我机器上都可以运行"这类典型的错误,在不同的机器上运行也只需要一个 Docker 守护进程,而不需要其他组件。
什么是 DockerDocker 是一个可以运行容器平台,为了运行这些容器,Docker 使用了操作系统级的虚拟化技术,你可以把容器看作是一个轻量级版本的虚拟机。
你在 Docker 平台上运行的所有容器都是相互隔离的。要启动一个容器,你需要一个 Docker 镜像,这个镜像是你的容器的模板,你可以从 Docker Hub 中获取已经预定义的镜像,或者通过编写 Dockerfile 文件来...
现在我们使用容器非常频繁,偶尔有一些需求需要更改容器镜像中的一些行为,也许是一个很小的变化,一般我们能想到的就是重新构建镜像,但是这个我们就需要重新构建发布镜像了,除了构建镜像这种方式之外其实还有其他方式可以来实现这个需求。
初始化容器Init Containers 是为了给 Pod 中定义的主容器提供附加功能的。它们在主容器之前执行,可以使用不同的容器镜像,如果出现任何故障,它们将阻止主容器的启动,所有的日志都可以很容易查看到,故障排除也相当简单,它们就像在 Pod 中定义的任何其他容器一样。这种方法在数据库等服务中比较常用,可以根据配置参数对它们进行初始化和配置。
下面的例子使用一个...
节点配额和内核参数调整对于公有云上的 Kubernetes 集群,规模大了之后很容器碰到配额问题,需要提前在云平台上增大配额。这些需要增大的配额包括:
虚拟机个数
vCPU 个数
内网 IP 地址个数
公网 IP 地址个数
安全组条数
路由表条数
持久化存储大小
参考gce随着node节点的增加master节点的配置:
1-5 nodes: n1-standard-1
6-10 nodes: n1-standard-2
11-100 nodes: n1-standard-4
101-250 nodes: n1-standard-8
251-500 nodes: n1-standar...
故障一故障现象kubelet 启动不了,通过命令 journalctl -u kubelet 查看日志,报 Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup [kubepods burstable]: failed to find subsystem mount for req...
这个项目叫做 Reloader,它可以监控 Configmap/Secret 的变化,根据 Annotation 选择 Deployment,对相关 Deployment 进行滚动更新。
部署简单工具的安装还是很简单的:
12kubectl apply -f \https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml
如果无法拉取,可以去我github上拉取相关配置文件Github
首先创建我们要用到的配置对象Configmap(domain_n...
Kubernetes 的节点可以按照节点的资源容量进行调度,默认情况下 Pod 能够使用节点全部可用容量。这样就会造成一个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。除非为这些系统守护进程留出资源,否则它们将与 Pod 争夺资源并导致节点资源短缺问题。
当我们在线上使用 Kubernetes 集群的时候,如果没有对节点配置正确的资源预留,我们可以考虑一个场景,由于某个应用无限制的使用节点的 CPU 资源,导致节点上 CPU 使用持续100%运行,而且压榨到了 kubelet 组件的 CPU 使用,这样就会导致 kubelet 和 apiserve...
临时存储简介Node节点通常还可以具有本地的临时性存储,由本地挂载的可写入设备或者 RAM来提供支持。 临时(Ephemeral) 意味着对所存储的数据不提供长期可用性的保证。
Pods 通常可以使用临时性本地存储来实现缓冲区、保存日志等功能。 kubelet 可以为使用本地临时存储的 Pods 提供这种存储空间,允许后者使用 emptyDir 类型的卷将其挂载到容器中。
kubelet 也使用此类存储来保存节点层面的容器日志, 容器镜像文件、以及运行中容器的可写入层。
临时存储有哪些
本地临时存储(local ephemeral storage)
emptyDir
本地临时存储(lo...
本文介绍如何打造一个高效的Kubernetes命令行终端以及Kubernetes命令行操作。
为什么我们要打造高效的Kubernetes命令行终端呢?因为下面的三点原因:
Kubernetes作为云原生时代的“操作系统”,熟悉和是用它是每名用户(User)的必备技能。
命令行是最高效,最有“逼格”的操作方式,在喜欢命令的人眼里dashboard不是给开发者和管理员用的。
kubenetes原生提供了kubectl命令就很好用,再通过命令行调用很方便的说啊!
前几天看到dev.to网站里有人讨论Can I see your terminal? 我心想命令行这么“私人“的东西怎么能随便给...