Kubernetes 运维记录(3)

  1. Kubernetes证书续期100年
  2. 文件存储出现间歇性读写失败

Kubernetes证书续期100年

问题:有客户要求将证书续期100年,实际,只能续期10年

原因:ca 证书的有效期只有10年。

对策:修改Kubernetes代码,有2处修改。

第一处修改的代码位于Kubernetes项目的

\staging\src\k8s.io\client-go\util\cert\cert.go 60行

tmpl := x509.Certificate{
		SerialNumber: new(big.Int).SetInt64(0),
		Subject: pkix.Name{
			CommonName:   cfg.CommonName,
			Organization: cfg.Organization,
		},
		DNSNames:              []string{cfg.CommonName},
		NotBefore:             now.UTC(),
		NotAfter:              now.Add(duration365d * 10).UTC(),
		KeyUsage:              x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature | x509.KeyUsageCertSign,
		BasicConstraintsValid: true,
		IsCA:                  true,
	}

将 now.Add(duration365d * 10).UTC(), 改成 now.Add(duration365d * 10 * 10).UTC(),

第二处修改的代码位于Kubernetes项目的

kubernetes\cmd\kubeadm\app\constants\constants.go 48行

// CertificateValidity defines the validity for all the signed certificates generated by kubeadm
CertificateValidity = time.Hour * 24 * 365

将 time.Hour * 24 * 365 改成 time.Hour * 24 * 365 * 100

进入kubernete项目的根目录,执行

make all WHAT=cmd/kubeadm GOFLAGS=-v

编译的产物:可执行文件kubeadm 位于 _output/bin/kubeadm 目录下

参考:

  1. https://kubernetes.io/zh-cn/docs/tasks/tls/

文件存储出现间歇性读写失败

无法读写文件,甚至ssh无法登陆,login后没有生成session。只能控制台登陆。这时候要考虑是不是磁盘满了。

若df -h发现磁盘还有足够空余,还要检查是否因为小文件太多导致inode满了。df -i命令查看。

df -i

Filesystem                    Inodes   IUsed  IFree IUse% Mounted on
/dev/mapper/dev01-root       4964352 4964352      0  100% /
udev                          503779     440 503339    1% /dev
tmpfs                         506183     353 505830    1% /run
none                          506183       5 506178    1% /run/lock
none                          506183       2 506181    1% /run/shm
/dev/sda1                     124496     255 124241    1% /boot

解决inodes 占用100%,两种途径,一是删除无用文件,二是扩容。

检查tmp目录文件数量 ls -lt /tmp | wc -l

若tmp目录文件数量过多,删除tmp目录文件 find /tmp -type f -exec rm {} ;

若删除不能解决问题,得考虑扩容了。ext4文件格式不支持inode扩容,xfs文件格式支持inode扩容

ext4文件格式支持在分区格式化的时候配置inode参数调整inode空间大小,但是这么做还不如直接将磁盘设定为可扩容的xfs格式。

[root@dqysh020073 app]# xfs_info /app
meta-data=/dev/mapper/VolGroup-app isize=512    agcount=4, agsize=773888 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=3095552, imaxpct=1
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

isize=512表示inode默认大小512字节,imaxpct=1 表示inode最大占1%的空间,可以通过命令 xfs_growfs -m 2 /app 扩容inode。

扩容后,用 df -i 命令验证inode信息。


转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至 backendcloud@gmail.com