- 博客(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中pod亲和性和反亲和性
生产上为了保证应用的高可用性,需要将同一应用的不同pod分散在不同的宿主机上,以防宿主机出现宕机等情况导致pod重建,影响到业务的连续性。要想实现这样的效果,需要用到k8s自带的pod亲和性和反亲和性特性。Pod 的亲和性与反亲和性有两种类型:其中requiredDuringSchedulingIgnoredDuringExecution表示必须满足要求,preferredDuringSchedulingIgnoredDuringExecution表示尽量满足要求。下面以一个yaml文件为例上面配置
2022-07-04 16:48:20 4334
原创 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关注的人