简述
Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序
关键特性
- 自动化部署和回滚:Kubernetes 可以自动化地部署和回滚应用程序,确保应用程序始终处于预期的状态。
- 服务发现和负载均衡:Kubernetes 提供内置的服务发现和负载均衡功能,确保流量自动分配到健康的容器实例。
- 存储编排:Kubernetes 支持挂载本地存储、云存储和网络存储等多种存储系统。
- 自我修复:Kubernetes 可以自动重启失败的容器、替换被杀死的容器、以及在节点不可用时重新调度容器。
- 水平扩展:Kubernetes 可以根据需求自动扩展或缩减容器实例的数量。
主要组件
- Master 节点:
- API Server:处理 REST 操作,提供集群的统一入口。
- etcd:分布式键值存储,用于存储集群的所有数据。
- Controller Manager:负责执行集群的控制逻辑,管理不同的控制器。
- Scheduler:调度器,负责将容器调度到合适的节点上运行。
- 工作节点(Node):
- Kubelet:运行在每个节点上,负责管理容器的生命周期。
- Kube-proxy:负责网络代理和负载均衡。
- 容器运行时:如 Docker 或 containerd,用于实际运行容器。从1.24版本之后不再使用docker作为运行时。
基本概念
- Pod:Kubernetes 中的最小部署单元,一个 Pod 可以包含一个或多个容器。
- Service:定义了一组 Pod 的访问策略,提供负载均衡和服务发现。
- Deployment:用于声明应用的期望状态,负责管理 Pod 的创建和更新。
- Namespace:用于将集群资源划分为逻辑上的组,以便不同的项目或团队使用。
搭建
环境准备
可以多节点部署,也可单节点部署。需要注意的是单节点部署要删除污点,否则无法部署应用
主机名 | IP地址 |
---|---|
master | 192.168.11.122 |
node | 192.168.11.127 |
1、禁用防火墙、selinux、swap
# 禁用防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 禁用selinux
sudo sed -i 's/enforcing/disabled/' /etc/selinux/config #永久禁用
sudo setenforce 0 # 临时禁用
# 禁用swap
sudo swapoff -a # 临时禁用
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab #永久禁用
2、将桥接的IPv4流量传递到iptables的链
以下为一条命令,可直接复制执行
cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1 # 开启路由转发
net.bridge.bridge-nf-call-ip6tables = 1 # 开启桥流量监控
net.bridge.bridge-nf-call-iptables = 1 # 开启桥流量监控
EOF
# 生效
sudo sysctl --system
3、apt 切换国内源
Ubuntu 22.04换国内源 清华源 阿里源 中科大源 163源_ubuntu22阿里源-CSDN博客
系统版本:ubuntu22.04
其他版本可自行搜索,不同版本对应不同的代号
cat > /etc/apt/sources.list << EOF
# 清华源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# 阿里源
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF
换源后,更新
apt-get update
4、时间同步
以下有两种方式,可任选其一
- 安装chrony
## 安装chrony
sudo apt-get update
sudo apt-get install chrony -y
## 启用并启动Chrony服务
sudo systemctl enable chrony
sudo systemctl start chrony
## 检查chrony状态,看时间是否同步
sudo chronyc tracking
- 安装ntpd
# 安装ntpd
sudo apt-get