1.1 集群创建说明
Kubernetes支持多种容器运行时,包括Containerd、Docker和CRI-O。以下是这三种方式的详细说明:
-
Containerd:Containerd是Kubernetes默认使用的容器运行时。它是一个轻量级的容器运行时,专为Kubernetes设计,提供了高效、稳定的容器管理能力。Containerd直接与Kubernetes集群交互,无需额外的桥接层,这使得它在性能和兼容性上都表现出色。
-
Docker:尽管Kubernetes默认情况下已经废弃了对Docker的直接支持,但是通过使用Mirantis维护的cri-dockerd插件,仍然可以实现Kubernetes集群的创建。Docker作为一个全面的容器平台,提供了丰富的功能和强大的社区支持。但是,由于Kubernetes对Docker的直接支持已经停止,因此在使用Docker时可能需要对Kubelet的启动参数进行一些调整,以确保其与Docker容器运行时正确交互。
-
CRI-O:CRI-O是一个专为Kubernetes设计的轻量级容器运行时,它直接实现了Kubernetes的容器运行时接口(CRI)。使用CRI-O创建Kubernetes集群需要安装CRI-O插件,并对Kubelet的启动参数进行配置,以指定CRI-O作为容器运行时。CRI-O专为Kubernetes优化,提供了简单、高效的容器管理功能,是一个很好的选择,特别是对于希望最大化Kubernetes集群性能和资源利用率的用户
注意:
Kubernetes 1.24版本引入了许多新特性和改进,以下是一些重要的更新:
-
从kubelet中移除dockershim:自1.20版本被弃用之后,dockershim组件终于在1.24的kubelet中被删除。这是确保Kubernetes项目未来发展的必要步骤。从1.24开始,用户需要使用其他受支持的运行时选项,例如containerd或CRI-O。如果选择Docker Engine作为运行时,则需要使用cri-dockerd插件。
-
关闭测试版API:Kubernetes 1.24版本将一些beta版API标记为废弃,转而使用稳定版API。这是为了确保API的稳定性和向后兼容性。
-
对发布工件进行签名:为了提高安全性,Kubernetes 1.24版本引入了对发布工件的签名验证。这意味着用户可以验证下载的Kubernetes二进制文件的完整性和来源。
-
OpenAPIv3:Kubernetes 1.24版本引入了对OpenAPIv3的支持,这是一个更现代的API描述规范,提供了更丰富的元数据和更好的API文档生成能力。
-
正式发布存储容量和卷扩展:Kubernetes 1.24版本正式发布了存储容量和卷扩展的功能,这使得用户可以更灵活地管理存储资源,并支持动态扩展存储卷。
-
NonPreemptingPriority稳定版发布:Kubernetes 1.24版本将NonPreemptingPriority策略升级为稳定版,这使得用户可以在Pod调度时使用更多的优先级控制选项。
-
存储插件迁移:Kubernetes 1.24版本进一步支持存储插件的迁移,提供了更多的选项和工具来帮助用户迁移到新的存储解决方案。
-
gRPC探针升级为Beta版:Kubernetes 1.24版本将gRPC探针升级为Beta版,这使得用户可以利用gRPC探针进行更高效的健康检查和故障排查。
-
Kubelet证书提供程序升级至beta版:Kubernetes 1.24版本升级了Kubelet证书提供程序到Beta版,这提供了更灵活的证书管理选项,包括自动轮换和更细粒度的权限控制。
-
上下文日志记录进入alpha阶段:Kubernetes 1.24版本引入了上下文日志记录的alpha阶段,这为用户提供了更多的日志记录选项和灵活性。
-
避免在向服务分配IP时发生冲突:Kubernetes 1.24版本引入了避免在向服务分配IP时发生冲突的功能,这提高了服务的可用性和稳定性。
1.2 环境规划
kubernetes集群大体上分为两类:一主多从和多主多从。
-
一主多从:一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境
-
多主多从:多台Master节点和多台Node节点,搭建麻烦,安全性高,适合用于生产环境
受资源限制,本次环境一主两从
1.3 Kubernetes基础环境部署
kubernetes有多种部署方式,目前主流的方式有kubeadm、minikube、二进制包
-
minikube:一个用于快速搭建单节点kubernetes的工具
-
kubeadm:一个用于快速搭建kubernetes集群的工具
-
二进制包 :从官网下载每个组件的二进制包,依次去安装,此方式对于理解kubernetes组件更加有效
-
K8s-all:主机名为三台都做
主机名 | IP地址 | 系统 | 配置 |
---|---|---|---|
k8s-master-01 | 192.168.110.21/24 | CentOS 7.9 | 4颗CPU 8G内存 100G硬盘 |
K8s-node-01 | 192.168.110.22/24 | CentOS 7.9 | 4颗CPU 8G内存 100G硬盘 |
K8s-node-02 | 192.168.110.23/24 | CentOS 7.9 | 4颗CPU 8G内存 100G硬盘 |
注意:关闭防火墙和SElinux
1.1.1 配置hosts解析和免密钥
[root@K8s-master-01 ~]# cat >> /etc/hosts << EOF 192.168.110.21 k8s-master-01 192.168.110.22 K8s-node-01 192.168.110.23 K8s-node-02 EOF [root@K8s-master-01 ~]# scp /etc/hosts K8s-node-01:/etc/ [root@K8s-master-01 ~]# scp /etc/hosts K8s-node-02:/etc/ # master节点可以免密钥访问其他节点 [root@k8s-master-01 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q [root@k8s-master-01 ~]# ssh-copy-id k8s-node-01 [root@k8s-master-01 ~]# ssh-copy-id k8s-node-02
1.1.2 配置NTP时间服务
[root@K8s-master-01 ~]# sed -i '3,6 s/^/# /' /etc/chrony.conf [root@K8s-master-01 ~]# sed -i '6 a server ntp.aliyun.com iburst' /etc/chrony.conf [root@K8s-master-01 ~]# systemctl restart chronyd.service [root@K8s-master-01 ~]# chronyc sources 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 201.107.6.88 2 6 17 18 +266us[+1386us] +/- 24ms [root@K8s-node-01 ~]# sed -i '3,6 s/^/# /' /etc/chrony.conf [root@K8s-node-01 ~]# sed -i '6 a server ntp.aliyun.com iburst' /etc/chrony.conf [root@K8s-node-01 ~]# systemctl restart chronyd.service [root@K8s-node-01 ~]# chronyc sources 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 201.107.6.88 2 6 17 18 +266us[+1386us] +/- 24ms [root@K8s-node-02 ~]# sed -i '3,6 s/^/# /' /etc/chrony.conf [root@K8s-node-02 ~]# sed -i '6 a server ntp.aliyun.com iburst' /etc/chrony.conf [root@K8s-node-02 ~]# systemctl restart chronyd.service [root@K8s-node-02 ~]# chronyc sources 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample ===============================