- 博客(56)
- 资源 (9)
- 收藏
- 关注
原创 无法找到docker.sock
因为如果直接使用dockerd命令的话,docker命令正常,因此我们直接把socket的路径写到service文件中即可。原因是:没有生成/var/run/docker.sock。然后无法使用docker。
2023-07-16 16:50:10
4288
原创 docker服务启动过程分析
但时至今日,在dockerd中实现的容器管理功能也已经不多,主要是镜像下载和管理相关的功能,其他的容器操作能力已经分离到containerd组件中,通过grpc接口来调用。docker是一个cs架构,我们启动docker的服务,就是启动docker s端,而s端其实就是在启动dockerd这个进程,dockerd为我们提供手动启动debug方式,可以看到docker s端启动日志,即dockerd --debug,因此,我们只要分析这个debug日志即可了解docker服务是怎么启动的,启动日志见附录。
2023-07-12 20:53:28
3823
原创 k8s负载均衡
因为有客户在搭建集群过程中,问了一下这个k8s流量负载均衡的问题,之前也没有这样深入的了解过这个原理,刚好在b站学习的时候,刚好老师讲到这个知识点,因此学习记录敲一下。环境信息:访问nginx-svc,映射到后端pod的流量基本上均分示例图如下:这里我们就理解一下这个百分之五十是怎么来的?这里我们重点关注一个组件 kube-proxy以下来自官方解释:service是一组pod的服务抽象,相当于一组pod的LB,负责将请求分发给对应的pod。service会为..
2022-02-21 20:55:36
4237
转载 redis集群搭建
目录如何用Redis实现亿级数据缓存哈希槽分区一致性哈希算法哈希槽分区案例演示三主三从redis集群搭建主从容错切换迁移案例1. 数据读写存储2. 容错切换迁移3. 集群扩容案例4. 集群收缩案例如何用Redis实现亿级数据缓存目前主流的Redis设计方案有如下三种哈希取余分区一致性哈希算法哈希槽分区2亿条记录就是2亿个k,v,我们单机不行必须要分布式多机,假设有三台机器构成一个集群,用户每次读写操作都是根据公式:hash(..
2022-01-13 21:13:32
474
原创 zabbix移植记录
zabbix整个移植过程下来比较顺利,因为官方就支持r系的dockerfile,虽然官方的r系系统是c7,有一些依赖库的小差异,这个也很容易排查,就是手动执行一下zabibx的二进制文件,缺啥装啥即可,这样的话节省了一半的时间,而且跟x86对比起来就更加方便了。唯一花时间的是,所有的镜像完成之后,运行起来有报错,就是zabbix-server一直连接不上mysql数据库,把防火墙关闭了也无用,下面就是两天的排查,边查mysql的资料边调吧,顺便学习一下mysql的用法啥的,zabbix个人觉得镜像没有啥
2021-12-25 10:15:15
1403
4
原创 申威容器镜像移植
需要了解的知识如何写Dockerfile,可参考文章 https://www.runoob.com/docker/docker-dockerfile.html 为了对比官方x86平台已经做好的镜像,需要了解docker分层特点,可参考文章 docker GraphDriver_leechm的博客-优快云博客 官方镜像仓库:https://hub.docker.com/search?type=image3. 了解docker常用命令 ...
2021-12-19 10:54:47
2684
原创 了解一下lsof
lsof(list open files)参数如下-a:列出打开文件存在的进程; -c<进程名>:列出指定进程所打开的文件; -g:列出GID号进程详情; -d<文件号>:列出占用该文件号的进程; +d<目录>:列出目录下被打开的文件; +D<目录>:递归列出目录下被打开的文件; -n<目录>:列出使用NFS的文件; -i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip ) -p<进程号
2021-12-09 21:21:19
359
原创 docker容器中误删bash依赖库?勿慌
之前客户在使用提供的基础镜像的时候,误删了bash 的一个依赖库,导致无法进入到该容器当中,也就是如果容器中没有/bin/bash、/bin/sh 或其他 shell,这个时候我们在不重新重新生成容器的前提下,如何进入到容器当中去修复这个问题呢?接下来,我们学习几种方法,可根据自己的需求可以选择,其实总的原理就是缺啥补啥而已问题复现:我们手动删除一个库文件[root@master1 ~]# docker run -it centos:7 bash [root@0094c4cb3b46 /]#
2021-11-30 20:56:35
1548
原创 docker GraphDriver
这里我们了解一下docker的镜像存储,在Docker中,一个很重要的概念就是GraphDriver,它主要用于管理和维护镜像,包括把镜像从仓库下载下来,到运行时把镜像挂载起来可以被容器访问等,都是GraphDriver去完成的。下面是我们运行的一个nginx容器,我们可以看一下他的GraphDriver,注意这里用的docker存储驱动是overlay2[root@master1 local-path-provisioner]# docker container inspect e5b3a9
2021-11-27 20:41:58
3751
原创 记录一次nginx-controller创建ssl失败问题
环境信息如下:docker和k8s版本[root@controllersw rootfs]# docker -v Docker version 19.03.11.ce, build 42e35e61f3[root@controllersw rootfs]# kubectl versionClient Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73
2021-11-21 17:50:20
3053
2
原创 helm基本知识(下)
上一篇只是简单的安装测试了一下helm的使用,这里补充一下关于helm的其他相关命令先查看本地导入的helm仓库[root@master1 ~]# helm repo ls NAME URL aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts搜索仓库里面的应用chart,这里会把应用的版本号和属于哪个仓库等信息显示.
2021-10-31 21:06:55
582
原创 如何修改docker存储磁盘类型
系统环境[root@controllersw ~]# cat /etc/.productinfoKYLIN Linux Advanced ServerV10(SP1)/(Tercel)-sw64-Build20.1-20210518-JUN[root@controllersw ~]#docker版本[root@controllersw ~]# docker -vDocker version 19.03.11.ce, build 42e35e61f3[root@controllers.
2021-10-28 12:25:47
1470
1
原创 Helm基本知识(上)
目录helm基本介绍helm的部署1. helm的安装2. 配置helm仓库(1)添加仓库(2)helm仓库的基本操作3. 使用helm快速部署一个应用第三步:查看安装之后的状态4. 自定义chart5. chart模板的使用helm基本介绍前言:在我们yum管理工具,主要解决的是包之间的依赖问题,而我们的helm工具是安装服务的问题,在我们的k8s中的包管理工具helm,它可以通过一些仓库去下载一些我们想要yalm文件,我们去修改这些yalm文件...
2021-10-23 21:17:58
3496
转载 存储的基本概念
认识分布式存储分布式存储就是通过网络将数据分散存储在多台独立的设备上。比如说,我们 现在有三台独立的机器,每台机器上各有20G独立的硬盘,我们可以将这三台机器上的硬盘组成一个60G的大存储去提供使用。分布式存储的特性分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为球性增长。分布式存储的水平扩展有以下几个特性:可扩展分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为球性增长。分布式存储的水平扩展有
2021-10-17 21:37:09
2538
原创 ceph存储应用--owncloud
项目框架节点规划节点名字 ip ceph owncloud 192.168.64.128 xxxx master1 192.168.64.150 mon,mgr,mds master2 192.168.64.151 osd master3 192.168.64.152 osd 部署环境准备所有节点更改hosts文件,关闭防火墙,关闭selinux,时间同步,添加ceph源和docker源,这个就不演示了,搭建过.
2021-10-17 18:53:10
772
原创 记录一次PostgreSQL连接失败问题
harbor版本:v1.10.8操作系统版本:[root@host157 clair]# cat /etc/.productinfoKYLIN Linux Advanced ServerV10(SP1)/(Tercel)-sw64-Build20.1-20210518-JUN[root@host157 clair]#容器化部署harbor,harbor-db和redis这两个容器一直处于restarting状态,查看redis日志,显示无法连接PostgreSQL,进而查看harbor..
2021-10-14 14:41:34
3670
原创 mock编译环境搭建
对于做操作系统的开发者来讲,一个干净的环境尤为重要。就我所接触的,能够实现自己的环境不被其他人“打扰”,有容器,chroot和mock环境了。前面两个超级简单,一个直接run镜像,一个就是chroot到某个文件系统,稍微复杂一点就是如何搭建属于自己的mock环境了,接下来就实操一下。操作系统环境[root@localhost ~]# cat /etc/.productinfoKYLIN Linux Advanced ServerRelease V10(SP1)/(Tercel)-sw64-B
2021-10-08 20:29:41
1841
原创 k8s 弃用docker?
官方说明:kubernetes/CHANGELOG-1.20.md at master · kubernetes/kubernetes · GitHubDocker support in the kubelet is now deprecated and will be removed in a future release. The kubelet uses a module called "dockershim" which implements CRI support for Docker a
2021-10-07 20:20:43
1839
原创 了解coredump
因为有运行环境产生coredump问题,之前也没怎么接触这一块,所以先记录学习一下基本操作os坏境[root@localhost ~]# cat /etc/.productinfo KYLIN Linux Advanced ServerRelease V10(SP1)/(Tercel)-sw64-Build23-20210810-GFB[root@localhost ~]# 这里我们只了解如何检查以及自定义程序运行过程中产生coredump的情况1. 检查coredum文件开关
2021-09-21 13:12:47
2284
原创 k8s 原生安全机制
目录机制说明Authentication安全性说明关于证书颁发关于kubeconfig文件ServiceAccountSecret 与 SA 的关系鉴权AuthorizationRBAC 授权模式RBAC 的 API 资源对象说明Role and ClusterRoleRoleBinding and ClusterRoleBindingResourcesto Subjects实践:创建一个用户只能管理 dev 空间1. 首先创建一个新的用户
2021-09-07 22:44:43
1234
原创 k8s 调度器
目录一 、调度说明简介调度过程自定义调度器二、调度亲和性pod跟node节点亲和性pod 跟pod亲和性三、污点和容忍Taint 和 Toleration污点(Taint)Ⅰ、 污点 ( Taint ) 的组成Ⅱ、污点的设置、查看和去除容忍(Tolerations)四、固定节点一 、调度说明简介Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单,但有很多要考虑的问题:
2021-09-05 21:56:47
1094
原创 k8s 存储之pv和pvc
在我们整个k8s集群中,外部可能有有一些存储的资源,比如说nfs,mfs,iscsi块存储,这些存储都是由我们的存储工程师去创建的,k8s工程师想要直接去使用他们的话,肯定是很不方便的,因为不同的存储方式不一样。在k8s中,给我们提供了一个新的对象资源,叫做PV,不同的PV会对应到不用的存储资源,这样我们在部署pod的时候直接调用集群内部的pv,即可完成对存储资源的使用,但是呢,直接调用PV的话,有个问题就是,这个pv是否满足我们的需求,因为我们可能需要的是存储能力比较大存储资源,所以这个时候需要一个一个去
2021-09-05 11:42:56
2341
原创 k8s 存储之volume
目录emptyDir(空的目录卷)emptyDir 的用法hostPathhostPath的用法docker有自己的持久化方案,我们的k8s集群中也有进行持久化的操作。容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。其次,在Pod 中同时运行多个容器时,这些容器之间通常需要共享文件。Kubernetes 中的 Volume 抽象就很好的
2021-09-04 22:43:08
372
原创 k8s 存储之secret
目录Service AccountOpaque SecretⅠ、创建说明Ⅱ、使用方式1、将 Secret 挂载到 Volume 中2、将 Secret 导出到环境变量中kubernetes.io/dockerconfigjsonSecret 存在意义Secret 解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者 Pod Spec中。Secret 可以以 Volume 或者环境变量的方式使用。也就意味着我们有一些密码被我们的pod去使用
2021-09-04 16:52:00
805
原创 k8s存储之configmap
目录configMap 描述信息Ⅰ、使用目录创建Ⅱ、使用文件创建Ⅲ、使用字面值创建Pod 中使用 ConfigMapⅠ、使用 ConfigMap 来替代环境变量Ⅱ、用 ConfigMap 设置命令行参数Ⅲ、通过数据卷插件使用ConfigMapⅣ、ConfigMap 的热更新configmap是专门存储我们配置文件的存储方案configMap 描述信息ConfigMap 功能在 Kubernetes1.2 版本中引入,许多应用程序会从配置文件、命令行参数或环境变
2021-09-04 12:03:07
719
原创 k8s ingress实现方案
前言: 对于我们传统的SVC来说,它只支持四层反向代理,但是如果遇到七层的话,就无法去实现,如下:假如说,我们有如上的一个集群,我们现在想要对整个集群,或者是Apache进行https的加密访问,也就是我们的客户端想要跟我们的Apache进行HTTPS访问,我们完全不需要在每一台Apache上配置我们的HTTPS,我们只需要在NGINX上开启HTTPS认证即可。。。。当我们的客户访问到NGINX的时候,由于NGINX和客户端之间是加密访问,NGINX因为本地没有数据,它会向后端进行反向代理,反向代理
2021-08-29 13:28:10
2243
7
原创 k8s service基础
假如说,我们有下面的服务需要部署进入我们的k8s集群中,方法:先创建我们的deployment,通过deployment部署我们的NGINX,它的副本数为1,然后去部署php-fpm,副本数为3,再部署MySQL,通过我们的StatefulSet,对于有状态服务,我们一般通过StatefulSet。意外情况:假如说,有一天我们的php-fpm中有一个突然挂掉了,那么此时我们的副本数目不满足3个了,此时就会再次创建出一个pod,那么新创建出来的这个pod,它的ip就会变化,此时NGINX里面还是原
2021-08-28 16:57:24
634
原创 pod控制器
基本概念pod的分类:自主式pod(静态pod):pod退出了,此类型的pod不会被创建。(了解)控制器管理的pod:在控制器的生命周期里,始终要维持pod的副本数目。(也就是说,控制器资源管理器管理的这些pod,我们不需要考虑这些pod是否死亡了,这个事情是资源管理器考虑的,它可以帮我们的把pod维持在我们的设定的副本数目)什么是控制器Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为。。控制器类型..
2021-08-20 17:52:13
245
原创 pod的生命周期--探针
目录容器探针探测方式实现一个探针1. 就绪检测 httpget的方式2. 存活检测livenessProbe-exec(exec的获取方案)livenessProbe-httpget(httpget的获取方案)livenessProbe-tcp(tcp方案)3. 并行检测启动、退出动作容器探针探针是由 kubelet 对容器执行的定期诊断。要执行诊断, kubelet 调用由容器实现的 Handler 。有三种类型的处理程序:E...
2021-08-20 12:41:21
381
原创 pod的生命周期--init C
目录Init 容器Init 容器的作用Init 容器的模板总结问题描述:比如说,我们运行一个pod,pod里面运行的有两个容器,如果这两个容器它们还在,但是它们里面运行的进程已经死亡了或者说意外中断了,由于某种故障,容器也并没有退出,造成这个pod还处于running状态,这个时候服务已经不可用了,因为进程都已经死了。但是对于整个pod来说,pod还是可以用的,这个时候就出现问题了。这个就引出我们的检测机制了,当然如果了解到k8s的知道,多用的检测机制是liveness和readne
2021-08-19 22:12:26
497
原创 iptables的小实验
iptables其实就是通过表的形式对我们的数据包进行一些限制。这里的话我们只实验常见的表和链,其他的暂先不实验,因为用的很少。1. filter表:对进入宿主机和从宿主机发出去的数据包进行过滤2. nat表:网络地址转换,DNAT,数据包到了当前宿主机的时候,我们把数据的目的地址/端口修改了,然后就可以转发到其他机器了。SNAT,反之。我们先查看一下宿主当前的规则[root@master1 ~]# iptables -t filter -nvLChain INPUT (policy
2021-08-19 19:59:35
374
2
转载 Iptables 基本设置指南
目录Basic Commands 基本命令Allowing Established Sessions 允许已建立的连接接收数据Allowing Incoming Traffic on Specific Ports 开放指定的端口Blocking Traffic 阻断通信Editing iptables 编辑iptablesLogging 记录Saving iptables 保存设置Configuration on startup 开机自动加载配置Tips 技巧Basi
2021-08-16 22:21:50
3533
原创 简述pod概念和服务发现
pod类型(非官方概念)自主式 Pod这个就是不被控制器管理的pod,它一旦死亡,就没有人会去管理它了,也不会有人去创建一个新的期望值去满足我们的需求。控制器管理的 Pod(下面的都是围绕控制器管理的pod来讲的)在我们的传统容器概念中,每一个容器都要自己对应的IP地址,都是独立存在的,通过我们的名字空间进行隔离等等,但在进行k8s移植的时候,就不是那么的容易了但是k8s给我们实现了解决办法,那就是提出pod的概念,我们先定义一个pod,它会先启动第一个容器,这个容器的特点就是只
2021-08-16 21:43:49
972
原创 docker镜像分层特点
我们知道,docker镜像都是分层的,从我们pull下来的过程就知道这个现象,现在有这么一个Dockerfile文件FROM centos:7RUN yum install net-tools-yRUN yum install httpd -yRUN yum install elink -yCMD ["/bin/bash"]它的分层图如下:分层的好处在于共享资源,比如说有很多的镜像,可以从base镜像构建而来,那么docker host当中只需要在硬盘上保存一份base镜像即可,
2021-08-15 22:27:31
824
原创 docker数据管理
目录docker容器的数据卷什么是数据卷?数据卷的使用docker的数据卷容器Docker数据卷的备份与还原docker overlay存储驱动docker容器的数据卷什么是数据卷?我们知道,docker的理念是将我们运行的程序与运行环境进行打包,因此docker容器的生存周期与容器中运行的程序相一致,而我们对数据的要求是持久化的。另一方面,docker容器之间也需要一个共享容器的渠道。这些需求就催生了数据卷的产生。数据卷的特点1、数据卷在容器启动时初始化,如果容
2021-08-15 17:25:40
421
原创 rpm打patch的方式
如何使用git命令打patch以下的说明只针对于centos/frdora/kylinos等rpm包管理的操作系统在我们平时的业务开发和维护中,遇到业务的一些问题的时候,就需要去修改源代码。像我平时中,修改的方式就两个,一个直接去源码中修改,一个就是打patch。前面的方式就是方便,带来的问题就是别人拿到修改的源码,不知道哪里修改了。常用的还是打patch,打patch呢,一个使用diff命令打,还有一个就是使用git的方式。准备工作:一个src包,这里我们以portainer-2.0.0-
2021-08-13 19:49:17
1180
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人