BusyBox

k8s集群部署八(DNS服务发现)

牧云@^-^@ 提交于 2020-03-09 11:02:17
在分布式微服务的访问中,我们在有可能的情况下需要互相调用各个模块的应用接口,这个时候就需要对对方的IP进行识别,我们称之为服务发现。在k8s中,Service提供了集群内部的虚拟IP,供集群内部的容器访问。 # kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.10.10.1 <none> 443/TCP 6d my-service ClusterIP 10.10.10.150 <none> 80/TCP,443/TCP 2d 其中my-service服务对应的集群IP则为10.10.10.150 首先看一下node的标签 # kubectl get node --show-labels NAME STATUS ROLES AGE VERSION LABELS 172.18.98.46 Ready <none> 5d v1.9.2 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=172.18.98.46 172.18.98.47 Ready <none> 5d v1.9.2 beta.kubernetes.io/arch=amd64,beta

Docker基础(3) 数据卷

我怕爱的太早我们不能终老 提交于 2020-03-02 21:30:20
创建数据卷 挂载Host目录作为数据卷 挂载Host的文件作为数据卷 数据卷容器 数据卷的备份和恢复 Docker容器一旦被删除,容器本身对应的rootfs文件系统就会被删除,容器中的所有数据也将随之消失。 Docker提供了数据卷的方式来持久化容器产生的数据,通过数据卷,还可以在容器之间共享数据。 创建容器时,通过-v参数可以数据卷,-v参数的格式为 [host-dir]:[container-dir]:[rw|ro] 其中 host-dir表示Host机器上的目录或文件,如果目录不存在Docker会自动在Host上创建 container-dir表示容器内部与host-dir对应的目录或文件,如果不存在Docker同样会自动创建 rw|ro用于控制数据卷的读写权限,默认rw(可读写) 创建数据卷 如果不指定host-dir,Docker也会在容器内部创建目录 $ docker run -it --rm -v /volume1 --name testbox busybox 在另一个终端执行inspect命令可以看到这种方式下,Docker会在Host的/var/lib/docker/volumes/目录生成一个随机的目录来挂载/volume1。 $ docker inspect -f {{.Mounts}} busybox "Mounts": [ { "Type":

手把手教你搭建Docker Registry私服

北战南征 提交于 2020-02-27 00:48:06
前言 Build, Ship and Run any App, Anywhere 关于Docker更多的概念将不在本文赘述了,作为虚拟化市场的一颗冉冉升起的新星,Docker得到了越来越多企业的青睐,越来越多的开发者决定拥入Docker的怀抱。 “集装箱”是Docker设计哲学之所在,它让一台物理机(或者虚拟机)同时运行多个彼此隔离的应用变得更为轻松简单,当然这一切还是多亏Linux的相关底层技术,当然,也包括OS X,Windows这两个操作系统。 Docker的相关教程已经够多了,但是由于Docker近年来发展迅猛,版本迭代速度较快,多个版本之间还存在不兼容的情况,如果在网上找博客文章,未必能解决自己遇到的问题。 当然,对于Docker的环境安装,基础命令之类的内容,是完全没有问题的,通读官网文档内容基本都能顺利掌握。然而,当笔者尝试着搭建一套基于SSL的Docker Registry(官网推荐的做法)却遇到了不少的麻烦,对于这部分内容,大多数博客文档内容都是直接跳过了SSL的环节,采用了HTTP的访问形式。 特此分享,通读完了此篇文章后,对于搭建Docker Registry就不再是问题了。 > docker --version Docker version 18.03.1-ce, build 9ee9f40 1 2 3 以上是我的Docker环境,建议安装Docker1.6

Docker是如何实现隔离的

跟風遠走 提交于 2020-02-26 08:30:14
概述 容器化技术在当前云计算、微服务等体系下大行其道,而 Docker 便是容器化技术的典型,对于容器化典型的技术,我们有必要弄懂它,所以这篇文章,我会来分析下 Docker 是如何实现隔离技术的,Docker 与虚拟机又有哪些区别呢?接下来,我们开始逐渐揭开它的面纱。 从运行一个容器开始 我们开始运行一个简单的容器,这里以 busybox 镜像为例,它是一个常用的Linux工具箱,可以用来执行很多Linux命令,我们以它为镜像启动容器方便来查看容器内部环境。 执行命令: docker run -it --name demo_docker busybox /bin/sh 这条命令的意思是:启动一个 busybox 镜像的 Docker 容器, -it 参数表示给容器提供一个输出/输出的交互环境,也就是TTY。 /bin/sh 表示容器交互运行的命令或者程序。 进程的隔离 执行成功后我们就会进入到了 Docker 容器内部,我们执行 ps -ef 查看进程 / # ps -ef PID USER TIME COMMAND 1 root 0:00 /bin/sh 8 root 0:00 ps -ef 使用 top 命令查看进程资源 Mem: 1757172K used, 106080K free, 190676K shrd, 129872K buff, 998704K cached

linux下如何远程调试busybox?

我只是一个虾纸丫 提交于 2020-02-19 20:16:36
1. 交叉编译busybox 1.1 使能选项CONFIG_STATI(静态链接) 1.2 使能选项CONFIG_DEBUG(编译时加入调试信息) 1.3 使能选项 CONFIG_DEBUG_PESSIMIZE(禁止优化) 2. 在目标机上启动代理gdbserver $ gdbserver :<port> busybox_unstripped hwclock (如 $gdbserver :2222 busybox_unstripped hwclock) 3. 在宿主机上启动your-cross-gdb $ your-cross-gdb busybox_unstripped (gdb) target remote <ip>:<port> (gdb) b hwclock_main (gdb) c /*--> */ /*--> */ 来源: https://www.cnblogs.com/dakewei/p/12332483.html

嵌入式根文件系统的移植和制作详解

青春壹個敷衍的年華 提交于 2020-02-19 08:23:33
理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系统简单的说就是一种目录结构,由于 linux操作系统的设备在系统中是以文件的形式存在,将这些文件进行分类管理以及提供和内核交互的接口,就形成一定的目录结构也就是文件系统,文件系统是为用户反映系统的一种形式,为用户提供一个检测控制系统的接口。   根文件系统,我认为根文件系统就是一种特殊的文件系统,那么根文件系统和普通的文件系统有什么区别呢?由于根文件系统是内核启动时挂在的第一个文件系统,那么根文件系统就要包括Linux启动时所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在 Linux挂载分区时Linux一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序bin目录等,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。   Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。   Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动

第八章 Health Check

こ雲淡風輕ζ 提交于 2020-02-19 07:41:18
8.1 默认的健康检查    每个容器启动时会执行一个进程,此进程由Dockerfile的CMD或ENTRYPOINT指定。 如果进程退出时返回码非零,则认为容器发生故障 ,K8s就会根据restartPolicy.   如果容器进程返回 非零,K8s就认为容器发生故障,需要重启。    可是有时候,容器发生了故障,但是容器并不退出。 apiVersion: v1 kind: Pod metadata: labels: test: healthcheck name: healthcheck spec: restartPolicy: OnFailure containers: - name: healthcheck image: busybox args: - /bin/sh - -c - sleep 10; exit 1  8.2 Liveness探测    Liveness探测让用户可以自定义判断容器是否健康的条件。如果探测失败,K8是就会重启容器。 apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness spec: restartPolicy: OnFailure containers: - name: liveness image: busybox args: - /bin/sh -

根文件系统制作(一)

家住魔仙堡 提交于 2020-02-12 00:49:01
在前面的内核移植中,使用的是开发板上原有的根文件系统,这里就来讨论一下如何自己制作根文件系统。 根文件系统可以由JFFS2、YAFFS2、UBIFS等文件系统支持,这里仍就选择UBIFS文件系统来制作根文件系统。UBIFS是Unsorted Block Image File System(无序区块镜像文件系统)的缩写,是一种较新的文件系统。UBIFS作为JFFS2的后继文件系统之一,在设计与性能上均较YAFFS2、JFFS2更适合于MLC NAND FLASH存储器。Linux内核从2.6.27以后的版本都提供了对它的支持,因此实现起来比较方便。 根文件系统实际上就是Linux根目录树的一个集合,由一些特定的目录、设备节点文件、内核模块文件、库文件、命令集以及其它一些配置文件组成。这个集合最终依赖于某个类型的文件系统来实现,下面就具体来讨论基于UBIFS文件系统的根文件系统制作过程。 首先要建立一个存放根文件集合的目录,这里就在根目录下建立一个名为rootfs的目录,把整个根文件系统都放在这个目录下。接下来进入rootfs目录,并在该目录下建立根目录树的第一层目录,执行“mkdir bin sbin etc dev proc lib sys var mnt usr tmp media home”产生出这些目录。 然后进入dev目录,在该目录下需要制作两个默认的设备节点文件,分别执行

使用 linux kernel +busybox 定制linux系统

☆樱花仙子☆ 提交于 2020-02-10 11:32:11
目的: 了解linux的启动过程 主要内容: 1.grub 是启动程序的bootloader 2.linux-kernel 是linux的开源内核 3.busybox 是linux的工具集合 启动顺序: grub-> bzimage > initrd > init > chroot sbin/init (从内存镜像转换成rootfs)>/etc/inittab > fstab>etc/init.d/rcS 实验环境: 操作系统(编译使用): CentOS 7.4Kernel 版本 :5.5.2 1.编译linux kernel 1) 下载及解压: https://www.kernel.org/ 目前最新版本5.5.2 https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.2.tar.xz 复制文件到 /usr/src/linux-5.5.2.tar.xz 解压 tar -xvf linux-5.5.2.tar.xz 2)编译linux kernel: 1 yum install ncusres‐devel # 按照需要编译的一些包 2 cd /usr/src/linux‐5.5.2 # 切换到linux源代码目录 3 make menuconfig #配置内核编译内容,配置一些信息 ,由于是演示,默认就可以了 4 make