自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k8s中使用docker作为容器运行时如何拉取私有镜像仓库镜像

接着根据提示输入用户名密码,完成之后会打印config.json文件生成的位置。然后通过config.json文件生成secret,如下。方括号中的地址填写镜像仓库的地址,也可以填域名。配置完重启docker,重新拉取镜像即可。在部署应用的时候添加对应的serviceaccount,如下。除了上述方法也可以通过指定用户名密码直接创建secret。最后在部署应用的添加imagePullSecrets。

2023-12-07 17:07:51 613

原创 k8s中pod滚动更新策略

当更新deployment时,会先创建1个新的pod,然后删除一个旧的pod,然后再创建一个新的pod,再删除一个旧的pod,始终保持2-3个pod可用。那么当更新deployment时,会先删除一个pod,然后创建一个新的pod,接着删除一个旧的pod,再创建一个新的pod,始终保持1-2个pod可用。更新时,会同时创建一半新的pod,删除一半旧的pod,再同时创建一半新的pod,删除一半旧的pod,根据创建和删除的速度,始终保持2-6个pod可用。deployment的更新策略有两种,分别是。

2023-05-05 18:22:49 1487

原创 k8s节点磁盘压力驱逐

节点压力驱逐是 kubelet 主动终止 Pod 以回收节点上资源的过程。当这些资源中的一个或者多个达到特定的消耗水平, kubelet 可以主动地使节点上的 Pod 失效,以回收资源。只有在没有更改任何参数的情况下,硬驱逐阈值才会被设置成这些默认值。如果你更改了任何参数的值,则其他参数的取值不会继承其默认值设置,而将被设置为零。如果回收节点级资源的尝试没有满足需求,kubelet 会根据所有容器的可写层使用情况,即磁盘使用量对 Pod 进行排序驱逐。驱逐条件包括软驱逐和硬驱逐。

2023-01-05 16:23:37 1200

原创 k8s中kubelet接口的认证和授权

访问kubelet接口的认证和授权

2022-08-11 10:51:57 1491

原创 k8s中pod亲和性和反亲和性

生产上为了保证应用的高可用性,需要将同一应用的不同pod分散在不同的宿主机上,以防宿主机出现宕机等情况导致pod重建,影响到业务的连续性。要想实现这样的效果,需要用到k8s自带的pod亲和性和反亲和性特性。Pod 的亲和性与反亲和性有两种类型:其中requiredDuringSchedulingIgnoredDuringExecution表示必须满足要求,preferredDuringSchedulingIgnoredDuringExecution表示尽量满足要求。下面以一个yaml文件为例上面配置

2022-07-04 16:48:20 4334

原创 查看k8s集群kube-proxy的代理模式

查看k8s集群中kube-proxy的代理模式

2022-03-31 21:12:09 5281

原创 k8s强制删除namespace

k8s强制删除namespace

2022-03-25 15:10:11 2457

原创 Liveness probe failed: OCI runtime exec failed: exec failed: container_linux.go:345:starting

k8s中配置pod的liveness探针,启动报错

2021-12-01 11:19:32 1806

原创 slave节点notReady,node节点事件显示PLEG is not healthy: pleg was last seen active 3m5.30015447s ago;问题排查

发现slave一台节点notReady,登上机器查看node信息,事件显示PLEG is not healthy: pleg was last seen active 3m5.30015447s ago;什么是PLEG可以参考如下文章http://www.xuyasong.com/?p=1819通常情况下是因为某个docker进程夯死导致的。可以使用for循环查看容器for c in `docker ps -aq`; do echo $c; docker inspect $c 1>/de

2021-07-26 15:37:29 711

原创 configmap挂载文件权限修改

k8s中configmap挂载文件的权限默认是420。这是十进制表示,转换成八进制就是644,如果容器中使用非root用户,此时文件没有可执行权限,需要修改文件权限。修改文件权限的方法如下:在volumes字段中修改defaultMode参数的值。volumes: - configMap: defaultMode: 493 name: test如上所示,将名为test的configmap的权限设置成493,转换成八进制就是755。修改权限的时候切记yaml中是十进

2021-07-19 17:13:22 12989

原创 k8s赋予用户进入容器以及向容器中拷贝文件的权限

在k8s中集群中赋予用户进入容器以及向容器中拷贝文件的权限,自定义clusterrole如下:apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: system:unzip-adminrules:- apiGroups: - "" resources: - pods/exec verbs: - get - list - watch - exec - create赋

2021-07-14 17:53:28 968

原创 k8s中更新deployment和service时提示409冲突

项目组在自动化更新service的yaml时,遇到如下报错提示必须指定metadata.resourceVersion字段,查看k8s官网中更新service的示例如下:$ curl -X PUT -H 'Content-Type: application/yaml' --data 'apiVersion: v1kind: Servicemetadata: name: deployment-example resourceVersion: "2205995"spec: cluste

2021-07-13 19:04:19 1581

原创 k8s基于RBAC的权限控制,赋予pod访问k8s API的权限

部署在k8s集群中的应用,有些需要拥有访问k8s API服务器的权限,比如说获取当前命名空间下的pod,svc等资源。k8s通过RBAC规则来赋予用户、pod、组相应的权限。其中pod使用一种称为service accounts的机制,下面我们来实践如何为pod中的应用添加权限。首先需要在命名空间中创建serviceaccount资yaml详细内容如下:接着创建role(角色),role中包含角色所具有的功能,yaml内容如下:yaml中定义了角色有获取default命名空间中pods的权限。

2021-04-13 17:40:11 1983

原创 升级k8s监控prometheus chart版本后pod报错

为了监控需求,对k8s集群的prometheus版本进行了升级,升级之后发现pod启动失败,查看原因如下:提示opening storage failed: block dir: “prometheus/01EVH85VNH9Mxxxxxx/meta.json: no such file or directory”数据采用pv形式挂载nfs进行持久化,进入存储卷报错的目录查看发现为空目录,刚开始以为是升级过程中造成文件丢失,查看存储备份后发现之前目前就是空的,将空目录删除之后pod正常启动,监控正常。

2021-03-18 16:37:46 647

原创 修改k8s的pod中的hosts文件

某些情况下如果在pod中添加容器的hosts文件条目,除了采用configmap形式挂载hosts文件的方法外,可以在pod的yaml文件中添加HostAliases字段来添加条目,该文件由 Kubelet 管理,并且可以在 Pod 创建/重启过程中被重写。该字段和containers同级别,配置方式如下:apiVersion: v1kind: Podmetadata: name: hostaliases-podspec: restartPolicy: Never hostAliase

2021-03-02 17:12:36 5417

原创 k8s集群创建用户只读权限资源的kubeconfig

用户需要一定的权限获取k8s的一些资源,根据需求需要为用户创建一个只读权限的kubeconfig。创建只读权限的⽤户,⼤致可以分为以下3个步骤:根据ca签发⽤户的证书根据⽤户证书绑定⻆⾊并⽣成kubeconfig⽂件(只读权限模版使⽤的是k8s默认view 的clusterrole,如果需要可以⾃⾏设定⻆⾊role)将kubeconfig⽂件放⼊⽤户的.kube⽬录下,并测试权限新建一个name-csr.json文件,内容如下# 根据ca签发⽤户证书,这⾥选择⽤cfssl,也可以使⽤open

2021-01-14 19:42:10 2368 2

原创 容器中输入长命令折叠问题

在容器云平台页面上进入容器输入长命令会折叠,原因是环境变量COLUMNS值过小,默认值为80。将COLUMNS值的设置的大一点,再次输入命令就不会折叠了。

2020-12-30 16:59:00 244

原创 限制单个容器可占用的磁盘空间

docker在17.07.0-ce中引入overlay2.size,https://github.com/moby/moby/pull/32977使用overlay2.size的前提是文件系统为xfs,并且挂载时使用pquota。开启xfs的pquato功能,pquato限制的是project的磁盘配额。docker的overlay2需要的是pquota,在/etc/fstab中设置:/dev/sdb /var/lib/docker xfs rw,pquota00保存退出。然后江/dev/sdb

2020-11-27 10:06:20 1024

原创 live-restore重载docker守护进程而不重启容器

默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。您可以配置守护程序,以便容器在守护程序不可用时保持运行。此功能称为live-restore。live-restore选项有助于减少由于守护进程崩溃、计划中断或升级而导致的容器停机时间。在工作中,假如修改了docker的配置而需要重新加载docker守护进程,导致docker容器重启,业务会中断一会,尤其是在生产环境,存在一定的风险。这种情况下,可以启用live-restore功能,以在守护进程不可用时使容器保持活动状态,有以下两种方法设

2020-11-27 09:57:36 3360

原创 污点(taints)和容忍度(tolerations)

k8s集群可以通过设置节点污点和pod容忍度来避免或者指定pod调度到目标节点。给节点设置污点kubectl taint nodes nodename key=value:effect其中value值可以省略,effect有三个值可以选,分别是NoSchedule,NoExecute,PreSchedule。去点污点kubectl taint nodes nodename key:effect-NoSchedule表示新的pod将不会调度到该节点,NoExecute表示新的pod将不会调度到

2020-11-27 09:52:39 805

原创 k8s使用nas存储基于nfs实现动态存储持久卷PV,PVC

k8s使用nas存储基于nfs实现动态存储持久卷PV,PVC工作中遇到项目组采用statefulset部署有状态副本集,需要存储一些中间件应用数据,应用有多个副本,静态pv不能满足需求,因此需要考虑动态创建持久卷。目前开发测试环境采用nas存储数据,已经安装了nfs服务端以及客户端。采用动态存储需要提前安装nfs工具,安装并设置nfs存储卷之后开始以下步骤:首先需要在项目所在k8s集群创建storageclass,即存储类。创建storageclass首先需要创建provisioner副本。创建副本之前

2020-11-27 09:47:12 4853 1

空空如也

空空如也

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

TA关注的人

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