自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 kubelet加入k8s集群

root@kubelet-test:~# kubeadm join 192.168.1.35:6443 --token z8rs6r.1ivfw7pdlmtl905j --discovery-token-ca-cert-hash sha256:1ed94855fded19a095bd35487706ff893819b2a1102bbb355f769ac8787a69a3[preflight] Running pre-flight checkserror execution phase preflight

2021-12-15 17:49:28 1583

原创 单节点加入集群

节点VM准备参考 runc+containerd+kubelet因kubelet配置项较多,且为了引用已有的开源项目,在节点初始化启动static pod的过程中,对kubelet采用命令行方式启动,传递最少参数/usr/bin/kubelet --cgroup-driver=systemd --pod-manifest-path=/etc/kubernetes/manifests/ --container-runtime=remote --container-runtime-endpoint

2021-12-15 17:47:40 1112

原创 static pod四 (kata+containerd+kubelet)

统一ubuntu机器源和kubernetes源1、将原先的apt源备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup2、修改apt 阿里源sudo vim /etc/apt/sources.list添加deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.c

2021-12-07 16:05:34 306

原创 static pod三(runc+containerd+kubelet)

统一ubuntu机器源和kubernetes源1、将原先的apt源备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup2、修改apt 阿里源sudo vim /etc/apt/sources.list添加deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.c

2021-12-07 10:36:32 244

原创 static pod二 实现

Static pod的实现分析下面基于Kubernetes v1.21.2的代码,主要分析Kubelet中处理Static pod的逻辑。如果对源码实现不感兴趣的读者可以跳过这部分。注意:这里不会详细介绍Kubelet的启动已经各种其他能力,可以参考:Kubernetes/cmd/kubelet/app/server.go:func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Dependencies,

2021-12-07 10:33:26 150

原创 static pod一 简介

Static pod简介普通podPod是kubernetes中最基本的工作单元,一个Pod中可以包含一组容器。通常情况,Pod的创建流程如下图所示(以Bare Pod为例):用户首先是请求Kube-apiserver创建Pod,当Pod被系统接受后,Pod作为一个资源对象被持久化在Etcd中,状态为Pending。控制组件Kube-scheduler通过Kube-apiserver监听到这个未被指定调度节点的Pod后,将会根据一定策略,修改Pod的status字段,标记为这个Pod理应分配到某个节

2021-12-07 10:32:56 684

原创 systemd介绍六:Journalctl查看并操作sytemd日志

一、内容简介作为最具吸引力的优势,systemd拥有强大的处理与系统日志记录功能。在使用其它工具时,日志往往被分散在整套系统当中,由不同的守护进程及进程负责处理,这意味着我们很难跨越多种应用程序对其内容进行解读。相比之下,systemd尝试提供一套集中化管理方案,从而统一打理全部内核及用户级进程的日志信息。这套系统能够收集并管理日志内容,而这也就是我们所熟知的journal。Journal的实现归功于journald守护进程,其负责处理由内核、initrd以及服务等产生的信息。在今天的教程中,我们将探

2021-12-07 10:02:43 1075

原创 systemd介绍五:管理服务实战二

一、读懂配置文件一个服务怎么启动,完全由它的配置文件决定。下面就来看,配置文件有些什么内容。前面说过,配置文件主要放在/usr/lib/systemd/system目录,也可能在/etc/systemd/system目录。找到配置文件以后,使用文本编辑器打开即可。systemctl cat命令可以用来查看配置文件,下面以sshd.service文件为例,它的作用是启动一个 SSH 服务器,供其他用户以 SSH 方式登录。[root@severless-k8s-master system]# sys

2021-12-07 09:58:31 164

原创 systemd介绍四:管理服务实战一

一、开机启动对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。如果你想让该软件开机启动,就执行下面的命令(以docker.service为例)。sudo systemctl enable docker上面的命令相当于在/etc/systemd/system目录添加一个符号链接,指向/usr/lib/systemd/system里面的docker.service文件。这是因为开机时,Systemd只执行/etc/system

2021-12-07 09:57:47 229

原创 systemd介绍三:常见配置单元

常见的配置单元service :代表一个后台服务进程,比如 mysqld。这是最常用的一类。socket :此类配置单元封装系统和互联网中的一个套接字 。当下,systemd 支持流式、数据报和连续包的 AF_INET、AF_INET6、AF_UNIX socket 。每一个套接字配置单元都有一个相应的服务配置单元 。相应的服务在第一个"连接"进入套接字时就会启动(例如:nscd.socket 在有新连接后便启动 nscd.service)。device :此类配置单元封装一个存在于 Linux 设

2021-12-07 09:57:01 440

原创 systemd介绍二:基本概念及功能

一、基本概念​ Unit(配置单元):系统初始化需要做的事情非常多。需要启动后台服务,比如启动 ssh 服务;需要做配置工作,比如挂载文件系统。这个过程中的每一步都被 systemd 抽象为一个配置单元,即 unit。配置单元可以理解成一个服务、一个挂载点、一个交换分区的配置等等,systemd 将配置单元归纳为以下一些不同的类型。然而,systemd 正在快速发展,新功能不断增加。所以配置单元类型可能在不久的将来继续增加。下面是一些常见的 unit 类型见附录A。每个配置单元都有一个对应的

2021-12-07 09:56:17 1942

原创 systemd介绍一:发展历程

一、从init系统说起​ Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化。内核初始化的最后一步就是启动 PID 为 1 的 init 进程。这个进程是系统的第一个进程。它负责产生其他所有的用户进程。init 进程以守护进程(也就是服务)的方式存在,是所有其他进程的祖先。init 进程非常独特,能够完成其他进程无法完成的任务。​ init 系统能够定义、管理和控制 init 进程的行为。它负责组织和

2021-12-01 10:49:10 977

原创 Runc容器逃逸

容器隔离机制Linux通过namespace将不同的资源隔离,就像一个沙箱一样。被隔离到某个namespace中的内容,无法访问到其它namespace的内容。可以通过unshare或clone设置标志位来将进程放入新的命名空间。PID Namespace标志位: CLONE_NEWPID文档: man pid_namespaces在linux上执行man pid_namespaces可以查看对应的命令文档。部分截图如下:进程命名空间,在一个隔离的空间中,PID从1开始,相同PID与主机P

2021-12-01 10:47:20 289

原创 Runc容器运行过程

在每一个Kubernetes节点中,运行着kubelet,负责为Pod创建销毁容器,kubelet预定义了API接口,通过GRPC从指定的位置调用特定的API进行相关操作。而这些CRI的实现者,如cri-o, containerd等,通过调用runc创建出容器。runc功能相对单一,即针对特定的配置,构建出容器运行指定进程,它不能直接用来构建镜像,kubernetes依赖的如cri-o这类CRI,在runc基础上增加了通过API管理镜像,容器等功能。Kubelet,Cri-O,runc,Linux大致层级

2021-12-01 10:45:53 895

原创 Runc简介一

Open Container Initiative(OCI)开放容器计划:OCI 标准包含 运行时标准 和 镜像标准 两个部分,而 OCI 这个组织则是由 Docker, CoreOS 和其他的一些公司共同发起创建的,致力于将容器运行时和格式标准化。即:凡是遵守此标准的实现,无论是 Docker 还是 rkt 或者其他的运行时实现,均可以通过标准的镜像启动容器。Runc:runc 则是在 OCI 成立后,Docker 将其容器运行时 libcontainer 贡献出来后,并加以改造而成的,是Doc

2021-12-01 10:42:15 1691

原创 k8s-yaml文件详解

一、概述Kubernetes只支持YAML和JSON格式创建资源对象JSON格式用于接口之间消息的传递,YAML格式用于配置和管理YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。二、YAML文件优点YAML 文件易于人类阅读,具有表达性和可扩展性。YAML 文件易于实现和使用。可在编程语言之间轻松移植。与敏捷语言的原生数据结构相匹配。YAML 文件具有一致模型,支持通用工具。YAML 文件支持 On

2021-12-01 10:40:59 269

原创 k8s static pod

静态pod静态pod 是由 kubelet 管理的只在特定node上存在的pod;静态pod总是由kubelet创建的,并且只在kubelet所在的Node上运行。静态pod 不能通过 api-server来管理,无法和 RC,RS,Deployment或者 DaemonSet进行关联;并且 kubelet无法对静态pod 进行健康检查。创建静态 pod 的两种方式1、本地配置文件方式kubelet 启动时由 --pod-manifest-path 指定的目录(默认/etc/kubernetes

2021-12-01 10:38:42 1192

原创 kubectl命令用法总结

语法kubectl [command] [TYPE] [NAME] [flags] ​ 1、 command:子命令,用于操作Kubernetes集群资源对象的命令,如create, delete, describe, get, apply等​ 2、 TYPE:资源对象的类型,如pod, service, rc, deployment, node等,可以单数、复数以及简写(pod, pods, po/service, services, svc)​ 3、NAME:资源对象的名称,不指定则返回

2021-12-01 10:37:33 2357

原创 Kubernetes v1.22.2 环境搭建

Kubernetes v1.22.2 环境搭建文章目录Kubernetes v1.22.2 环境搭建1、环境准备2、三台主机准备工作2.1、修改/etc/hostname文件,更改三台主机名称2.2、更改/etc/hosts文件添加主机名与IP映射关系2.3、永久关闭防火墙和selinux2.4、关闭swap分区2.5、将桥接的IPv4流量传递到iptables的链2.6、Docker安装2.7、安装kubeadm等工具2.7.1、添加阿里云K8s的yum源2.7.2、安装Kubeadm、Kubelet、

2021-12-01 10:36:59 324

原创 grpc实战二:环境搭建及简单demo

Grpc实战二:环境搭建及简单demo2.1 grpc环境安装2.1.1 golang环境安装接下来的所有的教程以及代码都是golang代码进行演示,所以我们需要安装golang环境: 下载地址:golang 官网安装完在你的命令行工具输入go version就可以看到对应的下载版本然后就可以了。2.1.2 protoc 安装在 gRPC 开发中,我们常常需要与 Protobuf 进行打交道,而在编写了.proto 文件后,我们会需要到一个编译器,就是protoc。这个工具呢可以在Gi

2021-12-01 10:27:29 574

原创 grpc实战一:grpc简介

gRpc简介gRPC 是Google公司开发的一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。gRpc官网地址:https://www.grpc.iogRpc中文文档地址:http://doc.oschina.net/grpcgRPC是一款RPC框架,那么先了解Rpc是什么。Rpc基本概念RPC(Remote Procedure Call)远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,简单的理解是一个节点请求另一个节点提供的服务。

2021-12-01 10:24:40 283

原创 runc 源码编译安装

登入机器虚机跳板机登陆方式:ssh -i [public_key.pem] centos@172.17.9.143密钥:[public_key.pem]采用mobaxterm终端登录:登录进去后在执行ssh ubuntu@192.168.1.34,切换到root用户,执行sudo su -runc安装准备因为runc需要golang进行编译,所以得确保机器上是否已经安装了golang。1、下载最新版的golangwget -c https://studygolang.com/dl/go

2021-11-30 13:58:27 614

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除