centos 6 kubernetes(centos7哪个版本好)
Kubernetes(k8s)-v1.22.3版本证书有效期修改
在长时间使用Kubernetes(K8s)后,您可能会发现SSL证书一年有效期的限制。为解决这一问题,本教程将指导您如何修改Kubernetes v1.22.3版本中证书的有效期。
在开始之前,确保您的系统环境包括以下组件:CentOS Linux release 7.7.1908(Core) 5.4.159-1.el7.elrepo.x86_64,kubeadm-1.22.3-0.x86_64,kubelet-1.22.3-0.x86_64,kubectl-1.22.3-0.x86_64,以及kubernetes-cni-0.8.7-0.x86_64。
###查看证书有效期
通过两种方法检查证书有效期:
1.第一种方法:显示当前证书有效期。
2.第二种方法:同样显示当前证书有效期。
请注意,如果证书已更新,则显示的日期将不同。但与第一种方法的结果一致,通常为一年。
###修改证书有效期步骤
####准备环境
1.访问Go语言中文网下载最新版本的Go环境。
2.在Linux系统中配置环境变量。
3.验证Go环境已正确安装。
####下载Kubernetes源码
1.查看当前系统版本以下载与之匹配的Kubernetes v1.22.3源码。
2.确保能访问外网以从GitHub下载源码。
3.下载源码并解压。
####修改源代码文件
1.修改两个关键文件:`constants.go`和 `cert.go`。
2.通过`vim`查找`CertificateValidity`字段。
3.修改`cert.go`文件中的相关代码。
4.编译修改后的源代码文件。
5.生成新的Kubeadm二进制文件。
6.备份旧的Kubeadm文件,确保三台master节点均备份。
7.替换新文件。
####更新证书
1.执行证书更新命令。
2.观察结果,了解需要重启哪些服务以使更新生效。
3.重启这台master服务器。
4.查看新证书,除CA外,所有证书有效期更新为100年,未修改`cert.go`文件。
5.同样步骤更新其他两台master节点,将更新过的Kubeadm文件通过scp传输,并根据上述步骤生成新的证书文件。记得在更新后重启服务或服务器。
如何在docker centos容器中使用systemd
由于以下几个原因,docker的官方centos镜像中没有提供systemd服务:
systemd依赖于CAP_SYS_ADMIN capability.意味着运行Docker容器需要获得–privileged.这不利于一个base image;
systemd依赖于访问cgroups filesystem;
systemd有很多并不重要的文件存放在一个docker容器中,如果不删除它们会产生一些错误;
注意
在大规模Docker容器或集群等环境下,并不推荐使用Systemd来管理服务,还是使用诸如 Kubernetes、compose等管理工具吧。但在可控、几个容器环境下,我们还是希望使用systemd来方便管理我们的服务,那如何开启systemd呢?别急,请看下面。
1)首先创建一个Dockerfile用来创建systemd的base image,即父镜像。如下所示:
FROM centos:latest
MAINTAINER"xuchao"<xiaoxu790@126.com>
RUN yum-y install systemd systemd-libs
RUN yum clean all;\
(cd/lib/systemd/system/sysinit.target.wants/; for i in*;\
do [$i== systemd-tmpfiles-setup.service ]|| rm-f$i; done);\
rm-f/lib/systemd/system/multi-user.target.wants/*;\
rm-f/etc/systemd/system/*.wants/*;\
rm-f/lib/systemd/system/local-fs.target.wants/*;\
rm-f/lib/systemd/system/sockets.target.wants/*udev*;\
rm-f/lib/systemd/system/sockets.target.wants/*initctl*;\
rm-f/lib/systemd/system/basic.target.wants/*;\
rm-f/lib/systemd/system/anaconda.target.wants/*;
VOLUME ["/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
2)执行docker build命令,来创建一个有systemd的base image:
# docker build--rm-t systemd/centos7.
3)OK后,查看下我们build好的已有docker镜像。
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
systemd/centos7 latest 25de776022cb 59 minutes ago 314.8 MB
docker.io/centos latest a65193109361 3 weeks ago 196.7 MB
4)下面,我们就可以基于这个Systemd的镜像来创建所需要的其他服务的镜像了,比如Mariadb。当然这里就还需要另外一个Dockerfile。如下所示:
FROM systemd/centos7
MAINTAINER"xuchao"<xiaoxu790@126.com>
RUN yum-y install mariadb-server mariadb; systemctl enable mariadb.service
RUN yum clean all
EXPOSE 3306
CMD ["/usr/sbin/init"]
5)为避免冲突,执行如下步骤前,需要先将上述的Dockerfile文件重命名为其他名称。
同样的,执行docker build命令来创建一个我们需要的Mariadb镜像。
# docker build-t mariadb/centos7.
6)OK后,再查看下我们build好的已有docker镜像。
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mariadb/centos7 latest 9ed032ae46c3 13 minutes ago 555.1 MB
systemd/centos7 latest 25de776022cb 59 minutes ago 314.8 MB
docker.io/centos latest a65193109361 3 weeks ago 196.7 MB
7)不出所料,镜像都已经build OK了。
下面,我们就需要启动这个Mariadb的docker镜像了(注意需要使用参数–privileged)。如下所示:
# docker run--privileged-d-v/sys/fs/cgroup:/sys/fs/cgroup:ro-h systemd_mariadb-p 3306:3306-t mariadb/centos7
8)执行后续步骤前,我们需要先获取下该镜像启动后的容器ID。如下所示:
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6a080adf45a mariadb/centos7"/usr/sbin/init" 22 minutes ago Up 22 minutes 0.0.0.0:3306->3306/tcp determined_heisenberg
9)通过下面的命令在容器内执行命令:(其中d6a080adf45a为容器ID):
# docker exec d6a080adf45a ps-ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:32? 00:00:00/usr/sbin/init
root 17 1 0 14:32? 00:00:00/usr/lib/systemd/systemd-journald
mysql 18 1 0 14:32? 00:00:00/bin/sh/usr/libexec/mariadb-prepare-db-dir mariadb.service
root 38 1 0 14:32? 00:00:00 [dbus-daemon]<defunct>
mysql 39 18 0 14:33? 00:00:00/bin/sh/usr/libexec/mariadb-prepare-db-dir mariadb.service
mysql 40 39 0 14:33? 00:00:00 systemctl show-p Group mariadb.service
mysql 41 39 0 14:33? 00:00:00 sed s/^Group=//
root 42 0 0 14:33? 00:00:00 ps-ef
10)由此可见,Mariadb数据库服务已经正常启动起来了。
当然,我们还可以以交互式方式进入到该容器内,执行相关操作,比如验证systemctl命令。
# docker exec-it d6a080adf45a bash
[root@systemd_mariadb/]# systemctl status mariadb
● mariadb.service- MariaDB database server
Loaded: loaded(/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active(running) since Sat 2016-06-25 14:33:51 UTC; 1min 40s ago
Process: 101 ExecStartPost=/usr/libexec/mariadb-wait-ready$MAINPID(code=exited, status=0/SUCCESS)
Process: 18 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir%n(code=exited, status=0/SUCCESS)
Main PID: 100(mysqld_safe)
CGroup:/system.slice/docker-d6a080adf45a2d4c4c5d203cbe7aa354dbef886be3da296edf70e75267e9f05f.scope/system.slice/mariadb.service
├─100/bin/sh/usr/bin/mysqld_safe--basedir=/usr
└─256/usr/libexec/mysqld--basedir=/usr--datadir=/var/lib/mysql--plugin-dir=/usr/lib64/mysql/plugin--log-error=/var...
......................
OK,整个流程就讲完了。但有个遗留的问题,即:使用systemctl restart命令重启服务
kuboard 安装k8s 最新版本和历史版本
为了安装Kubernetes(K8s)的最新版本和历史版本,你需要准备至少两台机器,其中一台用于部署Kuboard,另一台既可以作为Master节点,也可以作为Node节点。注意,Node节点不推荐使用CentOS 9,我用过CentOS 7.9,CentOS 8的测试暂时未进行。
确保你的系统是干净的,没有任何软件安装。如果你打算安装历史版本的Kubernetes,即便之前部署过1.19版本,你也能仅使用一台机器完成部署。
在进行部署之前,记得在Kuboard机器上安装Docker。
部署步骤如下:
1.登录Kuboard,点击“安装”。
2.选择“高可用的Kubernetes集群”。
3.进入安装页面,按照教程进行安装。
4.如果要部署最新版本的K8s,需要添加节点。在页面上填写节点机器的配置信息。
5.点击“安装”。
6.在Kuboard页面上查看安装日志。
7.在Master和Node机器上进行测试,以确保部署成功。