一个Pod代表集群上正在运行的一个进程。Pod是Kubernetes创建或部署的最小/最简单的基本单位。 由一个或多个容器(container)构成的>集合,作为一个整体被部署到一个单一节点。同一个 pod 中的容器共享 IP 地址、进程间通讯(IPC)、主机名以及其它资源。Pod 将底层>容器的网络和存储抽象出来,使得集群内的容器迁移更为便捷。
pod的状态
kubectl -n namespace get pod #查看一个命名空间下所有pod和其状态
遇到的问题
可以看到一些pod的状态为ImagePullBackOff、CrashLoopBackOff、Pending
kubectl -n hummingbird describe pod mysql-hb-7c5cc54bd8-m8tmm #查看hummingbird命名空间下的pod mysql-hb-7c...的详细信息
kubectl -n hummingbird logs mysql-hb-7c5cc54bd8-m8tmm #查看指定pod的日志
可能会遇到报错:
Error from server (BadRequest): a container name must be specified for pod mysql-hb-7c5cc54bd8-m8tmm, choose one of: [mysql-hb metrics] or one of the init containers: [remove-lost-found]
这是因为 pod mysql-hb-7c5cc54bd8-m8tmm 启动了两个容器 mysql-hb metrics 和 remove-lost-found,
查看日志时需要指定查看那个容器,可通过命令 -c <container_name>指定
kubectl -n hummingbird logs -f pod/mysql-hb-7c5cc54bd8-m8tmm -c mysql-hb #查看mysql-hb日志
kubectl -n hummingbird logs -f pod/mysql-hb-7c5cc54bd8-m8tmm -c metrics #查看metrics日志
出现以下错误
2020-02-24 01:04:04+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.28-1debian9 started.
2020-02-24 01:04:04+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2020-02-24 01:04:04+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.28-1debian9 started.
2020-02-24 01:04:05+00:00 [Note] [Entrypoint]: Initializing database files
2020-02-24T01:04:05.045945Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
mysqld: Can't create/write to file '/tmp/ibxkbsPe' (Errcode: 13 - Permission denied)
2020-02-24T01:04:05.082274Z 0 [ERROR] InnoDB: Unable to create temporary file; errno: 13
2020-02-24T01:04:05.082302Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2020-02-24T01:04:05.082324Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2020-02-24T01:04:05.082333Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2020-02-24T01:04:05.082347Z 0 [ERROR] Failed to initialize builtin plugins.
2020-02-24T01:04:05.082354Z 0 [ERROR] Aborting
mysqld: Can’t create/write to file ‘/tmp/ibxkbsPe’ (Errcode: 13 - Permission denied)
无法对文件进行写入,初步推测是文件和路径的问题,参考1;参考2
进一步分析发现,mysql服务没有启动,netstat -apn | grep 3306 #没有反应 service mysql status #Unit mysql.service could not be found.找不到服务 systemctl restart mysqld.service #重启还是找不到 chkconfig --list #查看服务列表,发现是没有mysql服务的
按参考解决一下试试,使用root:root用户,创建/data/mysql目录,不知道是不是要重启pod,不会重启,没有成功
按参考解决一下试试,还是没有成功kubectl -n namespace delete pods podname #删除一个pod,删除之后会被重建,只不过后缀名会不一样
发现mysql的values.yaml与77有所不同
187的values.yaml:
# Custom mysql configuration files used to override default mysql settings
configurationFiles:
mysql_custom.cnf: |-
[mysqld]
innodb_buffer_pool_size=2G
max_connections=1000
innodb_temp_data_file_path=ibtmp1:12M:autoextend:max:5G
innodb_file_per_table=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
tmpdir=/data/mysql
77的values.yaml
修改为一样的之后还是不行
最后
kubectl -n namespace edit deploy mysql-hb #查看服务的配置