【容器】K8S|Podman|容器技术总目录|问题记录

总目录

【容器】Podman和常用命令_https://blog.csdn.net/bandaoyu/article/details/128026904

【K8S】kubectl常用命令总结|crictl管理命令_https://blog.csdn.net/bandaoyu/article/details/126394201

 

问题记录

k8s中pod目录访问权限不足

(摘自:https://blog.csdn.net/kylezhou1992/article/details/125452190)

相关背景
在调试mysql-operator和mysql,在部署mysql的过程中,一直出现,mysqld: File ‘/var/lib/mysql-bin.index’ permission deined或者报错Can’t find error-message file ‘/usr/local/mysql/errmsg.sys’
cluster.yaml

apiVersion: mysql.presslabs.org/v1alpha1
kind: MysqlCluster
metadata:
  name: my-cluster
spec:
  replicas: 2
  secretName: my-secret
  volumeSpec:
    hostPath:
      path: /data/mysql
      type: DirectoryOrCreate
  mysqlConf:
    innodb-buffer-pool-size: 1Gi

通过kubectl describe pod podname查看到pod是卡在了mysql-init-log或mysql容器启动过程中。
通过kubectl logs podname -c containername查看到容器的报错都为无法读写容器内/var/lib/mysql目录,而导致容器执行异常退出,而且镜像都在percona镜像。
服务器/data/mysql挂载了容器中的/var/lib/mysql。

思路

  • 判断是服务器上的/data/mysql权限配置不对,导致容器挂载后无权限。容器的默认用户为mysql,uid为999,gid为999。通过将/data/mysql权限设置为777,以及将目录用户和组设置为999:999,问题依旧存在。分析有误。
  • 通过手动模拟容器挂载,复现该问题,判断是否为容器启动时候的权限问题。
  • docker run -v /data/mysql:/var/lib/mysql -it percona bash,进入容器后,/var/lib/mysql目录用户就为999,可以访问并读写文件,无问题。分析有误。
  • 通过改变挂载目录/data/mysql变为/data,很奇怪,可以通过init-container,但是无法执行mysql的逻辑。问题依旧存在。
  • 可能是k8s启动有问题,通过模拟mysql容器化启动逻辑,启动后进入pod,判断问题能否复现。
  • 执行kubectl apply -f pod.yaml,让容器一直在sleep中,并进入容器kubectl exec -it podname – bash,发现/var/lib/mysql的目录用户和组都为root,则确认问题。k8s启动pod和docker启动容器的逻辑不同,k8s会默认使用root来创建设置挂载目录,而docker是使用宿主机上的目录的用户和组。

相关代码:
 

apiVersion: v1
kind: Pod
metadata:
  name: mytest
spec:
  containers:
    - name: percona
      image: percona
      volumeMounts:
        - mountPath: /var/lib/mysql
          name: mysql
      imagePullPolicy: IfNotPresent
      command:
        - /usr/bin/bash
        - -c
        - sleep 200000000
  volumes:
    - name: mysql
      hostPath:
        path: /data/mysql

修复

apiVersion: mysql.presslabs.org/v1alpha1
kind: MysqlCluster
metadata:
  name: my-cluster
spec:
  replicas: 2
  secretName: my-secret
  volumeSpec:
    hostPath:
      path: /data/mysql
      type: DirectoryOrCreate
  mysqlConf:
    innodb-buffer-pool-size: 1Gi
  podSpec:
    initContainers:
      - name: volume-permissions
        image: busybox
        securityContext:
          runAsUser: 0
        command:
          - sh
          - -c
          - chmod 750 /datea/mysqlk; chown 999:999 /data/mysql
        volumeMounts:
          - name: data
            mountPath: /data/mysql

通信失败

rdma 无法访问设备描述符的目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
网盘文件永久链接 目录: 1ocker三剑客名词介绍mp4 2 ckermachine与 dockercompose个绍mp4 3 ockercompose使用的三步mp4 4 ockercompose语法讲解 5 ockercompose语法讲解2av,mP 6 ockercompose案例1.mp4 7 ockercompose案例2.mp4 8 ockercompose案例3,mp4 9 dockerswarm简介与集群环境佳备mp4 10 dockerswarm集群搭建,mp4 11harbor准备两个版本的ngn镜像,mp4 12发布服务路由网格mp4 13负载均衡扩展与裁减mp4 14版本更新版本回退滚动间隔更新mp4 15本地存储着与网络存储卷mp4 16服务互联与服务发现mp4 17小结mp4 18容器认识1mp4 19容器认识2.mp4 20ocker个绍版本,mp4 21ocker容器使用的内核技术介绍mp4 22 ocker安装,mp4 23ocker客户端与服务端分离mp4 24程 docker操作演示还原环境mp4 25像容器仓库概念mp4 26找镜像下载镜像删除镜食m 27配置镜像加速器mp4 28镜像导出与导入方法mp4 29镜像仓库分美公网仓库创建与量作演示,mp4 30habo个绍hbo安装过程1.mp4 31 harbor安装过程2.mp4 32hbor上传下载mp4 33镜像小结imP4 34容器常见操作1mp4 35容器常见操作2mp4 36 ocker命令回顾 commit提交镜像_mp4 37 ockerexed操作,mp4 38 ocker常见操作总结重点mp4 39时复制和用时分配技术讲解mp4 40合文件系统介绍auts介绍mp4 41ufs过渡到 overlay . mp4 42过操作来理解 overlay, mp4 43 ocker存储驱动小结mp4 44器跑httpd案例1mp4 45自定义httpd容器并提交为镜像dockerrun启动应用详解mp4 46 docker数据卷mp4 47docker数据卷小结官方htpd镜像运行容器mp4 48docker跑mariadb或mysql应用mp4 49 docker跑应用补充与小结,mp4 50 ockerfile个绍参数讲解1mp4 51 ockerfile参数讲解2mp4 52ockerfile构建httpd镜像,mp4 53ockerfile构建httpd镜像2mp4 54 ockerfile构建 tomcat镜像mp4 55 ockerfile构建 tomcat多种方法之间的比较mp4 56 ockerfilel构建 mariadb镜像,mp4 57 ockert构建 mariadb镜像2小结mp4 58 ocker单宿主机容器互联mp 59 docker本地网络 bridge模式mp4 60 docker本地网络 hostnonecontainer模式,mp4 61跨 dockery网络方案ame价绍mp4 62 lanned网络搭建过程mp4 63 anned网络测试与网络小结mp4 64 docker的web管理平台小结mp4 ...............................................
Kubernetes,也称为K8s,是一个开放源代码系统,用于跨多个主机管理容器化的应用程序。 Kubernetes 是用于自动部署,扩展和管理容器化应用程序的开源系统。 它将组成应用程序的容器组合成逻辑单元,以便于管理和服务发现。Kubernetes 源自Google 15 年生产环境的运维经验,同时凝聚了社区的最佳创意和实践。 Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、 扩缩和管理。该项目托管在 CNCF。 Kubernetes 特性: 自动化上线和回滚 Kubernetes 会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。如果出现问题Kubernetes 会为你回滚所作更改。你应该充分利用不断成长的部署方案生态系统。 服务发现与负载均衡 无需修改你的应用程序即可使用陌生的服务发现机制。Kubernetes容器提供了自己的 IP 地址和一个 DNS 名称,并且可以在它们之间实现负载均衡。 服务拓扑(Service Topology) 基于集群拓扑的服务流量路由。 存储编排 自动挂载所选存储系统,包括本地存储、诸如 GCP 或 AWS 之类公有云提供商所提供的存储或者诸如 NFS、iSCSI、Gluster、Ceph、Cinder 或 Flocker 这类网络存储系统。 Secret 和配置管理 部署和更新 Secrets 和应用程序的配置而不必重新构建容器镜像,且 不必将软件堆栈配置中的秘密信息暴露出来。 自动装箱 根据资源需求和其他约束自动放置容器,同时避免影响可用性。将关键性工作负载和尽力而为性质的服务工作负载进行混合放置,以提高资源利用率并节省更多资源。 批量执行 除了服务之外,Kubernetes 还可以管理你的批处理和 CI 工作负载,在期望时替换掉失效的容器。 IPv4/IPv6 双协议栈 为 Pod 和 Service 分配 IPv4 和 IPv6 地址 水平扩缩 使用一个简单的命令、一个 UI 或基于 CPU 使用情况自动对应用程序进行扩缩。 自我修复 重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器,并且在它们准备好服务之前不会将它们公布给客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值