- 博客(72)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 七、使用kubeadm搭建生产环境单master多node节点的k8s集群
DEVICE=ens33#网卡设备名,大家ipaddr可看到自己的这个网卡设备名,每个人的机器可能这个名。kubeadm是官方提供的开源工具,是一个开源项目,用于快速搭建kubernetes集群,目前是比较。Kubeadm和二进制都适合生产环境,在生产环境运行都很稳定,具体如何选择,可以根据实际项目。kubeadm是工具,可以快速搭建集群,也就是相当于用程序脚本帮我们装好了集群,属于自动部。署,简化部署操作,证书、组件资源清单文件都是自动创建的,自动部署屏蔽了很多细节,使得对各个模。............
2022-07-28 10:27:14
237
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 四、《云原生 | Kubernetes篇》二进制安装部署k8s高可用集群V1.24
1.1、部署k8s的两种方式1)方式一:kubeadm部署Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。2)方式二:二进制软件包从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群3)两种方式对比Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护1.2.1、
2022-06-25 01:59:12
539
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二、《云原生 | Kubernetes篇》Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群--生产环境
目录1. Kubernetes 高可用安装1.1.1实验环境规划高可用Kubernetes集群规划kubeadm和二进制安装k8s适用场景分析1.1.2所有节点修改主机名1.1.3配置静态网络(static) 1.1.4一键生成密钥,主机之间免密登录编辑编辑 1.1.5 关闭交换分区提升性能1.1.6 修改内核参数1.1.7关闭并禁用防火墙1.1.8 关闭selinux1.1.9 配置阿里repo源1.1.10 配置阿里云docker 的repo源1.1.11配置安装 k8s 组件需要的阿里云的 rep
2022-06-18 19:20:51
703
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 初始化失败:已解决:error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR Port-6443]
[root@k8s-master01 ~]# kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.logFlag --experimental-upload-certs has been deprecated, use --upload-certs instead[init] Using Kubernetes version: v1.15.1[preflight] Runnin
2022-06-14 02:50:13
4023
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 七、Harbor构建企业级私有docker镜像的仓库的开源解决方案
目录 # Harbor 介绍# Harbor特性# Harbor组件## 1、设置harbor服务器主机名为harbor## 为 Harbor 自签发证书## 生成CA证书## 生成域名证书## 签发证书:##安装 Harbor2、初始化操作:关闭harbor服务器防火墙、禁用SELinuxDocker 容器应用的开发和运行离不开可靠的镜像管理,虽然 Docker 官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的 Registry 也是非常必要的。Harbor 是由 VMwar
2022-06-01 10:03:06
1424
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 六、《云原生》docker容器数据持久化
容器中的数据可以存储在容器层。但是将数据存放在容器层存在以下问题:数据不是持久化。意思是如果容器删除了,这些数据也就没了主机上的其它进程不方便访问这些数据对这些数据的I/O会经过存储驱动,然后到达主机,引入了一层间接层,因此性能会有所下降Docker 提供了3种持久化数据的方式:volumes:存于主机文件系统中的某个区域,由Docker管理(/var/lib/docker/volumes/ on linux)。非Docker进程不应该修改这些数据。卷是Docker中持久化数据的最好方式bind
2022-05-31 11:11:36
504
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 五、Dockerfile构建nginx、php和tomcat镜像
1、使用dockerfile制作nginx+php-fpm镜像,实现lnmp。1.1 制作基础镜像[root@offline base]# cat dockerfileFROM centos:centos7.8.2003MAINTAINER yanczhuRUN yum install wget -y && rm -rf /etc/yum.repos.d/*.repo && wget -O /etc/yum.repos.d/CentOS-Base.repo ht
2022-05-16 00:05:20
864
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 四、 《云原生 | docker篇》dockerfile构建tomcat镜像
创建tomacat8目录把apache-tomcat-8.0.26.tar.gz 和jdk-8u45-linux-x64.rpm,Centos-vault-8.5.2111.repo 传到这个目录编写dockerfile文件构建tomcat镜像查看tomcat镜像构建tomcat8容器启动tomcat查看进程是否启动成功打开新的终端窗口,查看刚才创建的tomcat8这个容器的详细信息通过上面可以看到,tomcat在宿主机上映射的端口49153,这样我们请求docker节
2022-05-15 18:13:11
797
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 三 dockerfile构建企业级nginx镜像
docker构建企业级nginx创建dockerfile目录编写dockerfile文件编写index.html首页构建镜像查看镜像是否构建成功基于镜像启动容器查看容器具体信息查看nginx网站内容
2022-05-15 02:12:50
180
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 二、dockersfile入门
dockerfile指南容器应该是短暂的通过 Dockerfile 构建的镜像所启动的容器应该尽可能短暂(生命周期短)。「短暂」意味着可以停止和销毁容器,并且创建一个新容器并部署好所需的设置和配置工作量应该是极小的。使用 .dockerignore 文件使用 Dockerfile 构建镜像时最好是将 Dockerfile 放置在一个新建的空目录下。然后将构建镜像所需要的文件添加到该目录中。为了提高构建镜像的效率,你可以在目录下新建一个 .dockerignore 文件来指定要忽略的文件和目录。.do
2022-05-13 12:36:59
469
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 一、docker容器使用以及搭建企业级web网站
区别:1、k8s是一种开放源码的容器集群管理系统,而Docker是一种开放源码的应用容器引擎;2、k8s是一套自动化部署工具,可以管理docker容器是容器编排层面的,docker是容器化技术,是容器层面的。k8s的全称 kubernetes。它是一个完整的分布式系统支撑平台,集群管理功能齐全。Kubernetes同时提供完善的管理工具,涵盖了开发、部署、测试、运行监控等各个环节。k8s是一种开放源码的容器集群管理系统,能够实现自动化部署、扩展容器集群、维护等功能。Docker是一种开放源码的应用容器引擎,
2022-05-05 15:04:03
1771
原创 k8s 删除流程
(3)API Server 检查 Finalizers 并结合是否需要进行 graceful 删除,来决定是否立即删除对象(若对象需要进行 graceful 删除,更新 metadata.DeletionGracePeriodSecond 和metadata.DeletionTimestamp 字段,不从存储中删除对象;比如namespace控制器无法删除完空间内所有的对象,特别是在使用 aggregated apiserver 时,第三方 apiserver 服务故障导致无法删除其对象。
2024-07-24 00:52:46
650
原创 Pod 行为异常
这里所说的行为异常是指 Pod 没有按预期的行为执行,比如没有运行 podSpec 里面设置的命令行参数。也可以查看创建后的 podSpec 是否是对的,比如。
2024-07-24 00:48:52
89
原创 Pod 状态长时间(小时级别)不更新,一直处于 Creating、Terminating 状态
当节点 Pod 数目过多(200+),Pod 状态更新时间非常频繁时,kubelet 的默认 QPS 值成为瓶颈,导致 Pod 状态不能及时更新到 kube-apiserver。kubelet 的 QPS 配置参数: --event-qps 、–kube-api-qps、–event-burst、–kube-api-burst 默认值分别为 5、5、10、10;kubelet 将查询的结果发给 kube-apiserver,以更新 Pod 的状态,这个发送过程受多个 QPS 参数控制;
2024-07-24 00:45:34
212
原创 Pod 一直处于 ImageInspectError 状态
dockerd 不能正确处理这个 Error https://github.com/allencloud/docker/blob/master/api/server/httputils/errors.go#L65,所以提示 FIXME: Got an API for which error does not match any expected type!节点上 docker 镜像文件损坏,当使用它启动容器后,容器文件系统错误,进而导致系统调用 readlink() 返回 os.PathError 错误;
2024-07-24 00:33:01
571
原创 Pod 一直处于 Pending 状态
可以使用 kubectl describe pods 查看 Pod 的定义,使用 kubectl get node --show-labels 查看各 Node 的 lables 列表,使用 kubectl label node lable_name=lable_value 给 Node 打标签;然后通过删除不用的 Pod 来释放资源,或增加新的 Node 来增加资源。kubelet 的 --max-pods 选项可以指定运行的最大 Pod 数目,通过调大该参数,如 110 → 240, 可以解决该问题。
2024-07-24 00:22:56
585
原创 Pod 处于 Error 状态
Node 处于 NotReady 状态,大部分是由于 PLEG(Pod Lifecycle Event Generator)问题导致的。3,容器无权操作集群内的资源,比如开启 RBAC 后,需要为 ServiceAccount 配置角色绑定。2,请求的资源超过了管理员设置的限制,比如超过了 LimitRange 等。Kubelet 未启动或者异常挂起:重新启动Kubelet。磁盘空间不足:清理磁盘空间,比如镜像、文件等。CNI 网络插件未部署:部署CNI插件。Docker :重启Docker。
2024-07-23 23:13:05
565
原创 k8s中pod创建过程
5,node kubelet检测到有新的Pod调度过来,通过container runtime运行该pod。2,apiserver接收到pod创建请求后,生成一个包含创建信息的yaml。6,kubelet 获得pod状态,并更新到apiserver中。1,客户端向apiserver发起一个create pod请求。4,根据scheduler调度器为pod分配node主机。3,apiserver将yaml信息写入etcd数据库。
2024-07-23 23:01:15
279
原创 1.3镜像管理
如果不指明端口,默认是80,tag是latest,比如:192.168.26.101:5000,再比如hub.c.163.com/library/mysql:latest.分类也可以不写,比如docker.io/nginx:latest。我们所使用的镜像都是从网上下载下来的,它们在制作过程中都是一点点修改的,一步步做出来的。在把镜像上传(push)到仓库的时候,镜像必须是按照这种格式命名,因为仓库地址就是由镜像前面的ip决定的。tag之后,新的镜像名和就得镜像名同=同时存在的。步骤1:给镜像做新标签。
2024-07-07 17:02:35
165
原创 k8s集群八大组件
注意:以上组件是Kubernetes集群的核心组件,根据实际需求还可能会使用额外的组件,如ingress控制器、监控工具等。kube-controller-manager:负责管理集群的控制器,比如pod的自动扩缩容等。kubelet:运行在节点上,负责管理pod的生命周期,比如创建、启动、停止、删除pod。kube-apiserver:提供了集群管理的API接口,是集群中访问的入口。kube-scheduler:负责调度pod到合适的节点上。kube-proxy:运行在节点上,负责提供网络代理。
2024-06-22 10:31:42
142
原创 Prometheus+Grafana+Alertmanager构建企业级监控系统
介绍 k8s 集群中部署 prometheus、grafana、alertmanager,并且配置 prometheus 的动态、静态服 务发现,实现对容器、物理节点、service、pod 等资源指标监控,并在 Grafana 的 web 界面展示 prometheus 的监控指标,然后通过配置自定义告警规则,通过 alertmanager 实现 qq、钉钉、微信报警。8.高效的存储,每个采样数据占 3.5 bytes 左右,300 万的时间序列,30s 间隔,保留 60 天,消耗。
2024-05-28 01:35:54
391
原创 容器CBS-CSI 常见报错和处理
原因:WaitForFirstConsumer 挂载模式依赖调度器触发云硬盘创建,而指定了 nodeName 参数会导致 Pod 在调度时跳过调度器,从而无法通知插件进行云硬盘创建。原因:cbs 插件在创建云硬盘时,会将集群的云标签集成到云硬盘上。原因:用户配置的 cbs 盘大小不符合规范导致买盘失败,不同类型的 cbs 盘,支持大小区间不同,具体查看 云硬盘类型文档。原因:cbs 插件在创建云硬盘时,会将集群的云标签继承到云硬盘上。解决措施:修改相关集群云标签,避免将标签 value 配置为空。
2024-04-08 13:56:08
467
1
原创 strace 命令详解
这是因为这里的 exit 函数不是系统调用,而是 glibc 库提供的一个函数,exit 函数的调用最终会转化为 exit_group 系统调用,它会退出当前进程的所有线程。比如我们知道创建进程使用的是 fork 系统调用,但在 glibc 里面,fork 的调用实际上映射到了更底层的 clone 系统调用。实际上,通过分析,我们发现机器上别的服务有个监控脚本,它监控一个也叫做 run.sh 的进程,当发现 run.sh 进程数大于 2 时,就会把它杀死重启。两段代码实现的目的是一样的。
2023-04-22 15:41:23
563
1
原创 常用命令-netstat
netstat通常用来查询系统的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字,如果觉得网络服务没有启动,可以通过该命令来查询。: 列出所有tcp连接端口及其应用程序。:持续输出所有tcp连接端口及其应用程序。:只显示监听的tcp端口及其应用程序。:查看HTTP服务是否在运行。:打印active状态的连接。: 查看使用80端口的程序。:只显示监听的tcp端口。:列出所有tcp端口。
2023-04-14 17:55:12
855
原创 curl ip.sb查询公网ip
ubuntu@VM-0-15-ubuntu:~$ curl ip.sb115.159.x.yubuntu@VM-0-15-ubuntu:~$
2023-04-14 16:01:21
497
原创 ssh配置公钥解决免密登录
这里测试用的客户端服务器地址为:10.202.63.40,服务端服务器为10.202.63.41。可以看到客户端写入到服务器10.202.63.41的 id_rsa.pub (公钥)内容。上面这个命令会在用户目录.ssh文件夹下创建公私钥。客户端通过ssh连接远程服务器,就可以免密登录了。上面这条命令是写到服务器上的ssh目录下去了。本地客户端生成公私钥:(一路回车默认即可)id_rsa.pub (公钥)二. 客户端生成公私钥。id_rsa (私钥)1.客户端生成公私钥。2.上传公钥到服务器。
2022-12-22 10:57:22
773
原创 公钥与私钥是区别
2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。,对这个摘要加密,生成"数字签名"(signature)。由此证明,这封信确实是鲍勃发出的。先用Hash函数,生成信件的摘要(digest)。1)鲍勃有两把钥匙,一把是公钥,另一把是私钥。5)鲍勃给苏珊回信,决定采用"数字签名"。3)苏珊要给鲍勃写一封保密的信。,就看到了信件内容。,即使落在别人手里,也无法解密。8)苏珊收信后,取下数字签名,用。,就可以达到保密的效果。
2022-12-22 10:45:00
2752
原创 集群断电重启The connection to the server apiserver.k8s:6443 was refused - did you specify the right
5.如果发现Unit kubelet.service entered failed state.code=exited, status=255 说明这台节点有污点 ,将污点删除。可以采用临时关闭 swapoff -a 但是断电重启之后需要再次设置 也可以设置永久关闭。6.排除问题之后 systemctl start kubelet 重启完成。3.查看kubelet 服务 是否正常。4.如果一会又不正常了请看详细信息。1.断电之后发现集群没有启动起来。2各个节点之间防火墙 一定要检查。
2022-10-22 01:21:15
2938
原创 pid上限问题,linux进程pid达到最大值,linux进程数最大值修改方法
1、此时,使用根用户不断创建进程,最终创建了约32378,考虑到原有的进程数,比较接近pid_max这个值;这个值表示单个用户允许的最大进程数上限。3、RLIMIT_NPROC (ulimit -u 或者 getrlimit)3、修改pid_max为80000,换成普通用户,最终创建了67913个进程。这个值表示进程ID的上限。为了兼容旧版,默认为32768(即两个字节)。2、改pid_max为18000时,最终创建了17612个进程;
2022-10-05 13:13:47
3328
原创 云原生kubernetes七 :Pod进阶篇:污点-容忍度-亲和性-Affinity-调度
【代码】云原生kubernetes十七 :Pod进阶篇:污点-容忍度-亲和性-Affinity-调度。
2022-10-04 16:58:53
606
原创 云原生kubernetes五 :pod创建流程
这些资源就是K8S中承载具体的工作的一些资源,常见的类型有:Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjon,...这类型资源主要提供集群的管理相关的功能,常见类型有:Namespace,Node,Role,ClusteRole,RoleBinding,ClusterRoleBinding。这类型的资源主要和存储相关,常见类型有:Volume,CSI,ConfigMap,Secret,DownwardAPI,...
2022-10-02 11:52:19
409
原创 云原生kubernetes六:namespace和Resourcequota
k get ns2查看namespace应用场景命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。1、查看名称空间及其资源对象(k8s集群默认提供了几个名称空间用于特定目的,例如,kube-system主要用于运行系统级资源,存放k8s一些组件的。而default则为那些未指定名称空间的资源操作提供一个默认值。-
2022-09-28 13:00:19
452
原创 kubectl别名配置
alias k='kubectl'alias kg='kubectl get'alias kgpo='kubectl get pod'alias ksysgpo='kubectl --namespace=kube-system get pod'
2022-08-31 10:31:28
914
原创 【云原生kubernetes】coredns解析集群外部域名
在实际的生产中,容器化并不是从服务的最初开发阶段便被应用的,因此,只要不是雷同,服务运行时实际所需的域名一定不是xxxx.default.svc.cluster.local, 而一定是其他的格式,例如:proxy.mgmt.pix.yun.com。么, 在哪里可以设置容器的/etc/resolv.conf中的该选项呢?众所周知,在一个kubernetes集群中,各服务之间可以通过各自的FQDN互相访问,而集群中的kube-dns服务为此提供了域名解析的功能, 使用如下的命令可以看到。kube-dns简介。.
2022-08-14 14:09:22
518
原创 calico报错Init:0/3或Init:RunContainerError
先用kubectl get pods --all-namespaces -owide查看问题pod,然后用kubectl describe pod pod_name -n kube-system来查看日志,一般情况下,我们都是可以通过这个方式来获取到报错原因的【一波情况下哈,并非绝对】把imagePullPolicy: IfNotPresent删掉,因为这个部署如果本地有镜像以后,即使是离线环境也默认使用本地镜像的,不需要指定imagePullPolicy: IfNotPresent,指定后就报错了。...
2022-08-11 00:01:57
2437
原创 十、k8s健康检查之 livenessProbe/readinessProbe
一个pod启动了之后,它有可能还在做初始化,这就意味着在初始化的应用进程还不能接受网络流量,所以要去控制一下pod的状态,也就是我还没有就绪,我还不能够接受流量。有些应用跑着跑着没有响应,出现大量的503,应用实例以及不能够正常工作了,是否需要帮你重启。tcp stocket 查看某个端口,比如某个应用跑在80端口上面,你只需要去看80端口是否是活着的,你就能够知道它是否就绪了。...
2022-08-10 23:22:07
814
TA创建的收藏夹 TA关注的收藏夹
TA关注的人