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机器上进行测试,以确保部署成功。

阅读剩余
THE END