CentOS介绍:
CentOS(Community Enterprise Operating System)是基于 Red Hat Enterprise Linux(RHEL)源代码编译的开源企业级操作系统,提供与 RHEL 二进制兼容的功能
完全兼容 RHEL,可直接使用 RHEL 软件包。
内置 yum/dnf 包管理工具,支持在线更新和依赖管理。
长期支持策略(LTS),适用于企业级应用的高稳定性需求
CentOS 替代方案:Rocky Linux, AlmaLinux,Alibabacloud Linux,Ubuntu,
CentOS源:
CentOS 源(即软件仓库)是包含系统软件包及其依赖关系的服务器地址集合,用于通过 yum 或 dnf 工具安装、更新和管理软件。其核心作用包括:软件分发:提供操作系统核心组件、第三方工具等软件包。
版本管理:每个软件包包含版本、依赖关系和元数据信息,确保安装和更新的兼容性。
安全与稳定:官方源经过稳定性验证,第三方镜像源(如阿里云、清华)则提供更快的下载速度。
配置文件位于 /etc/yum.repos.d/ 目录,例如 CentOS-Base.repo 定义了官方源的地址、密钥和启用状态。
更换阿里源:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11fnB14u
更换源后需执行 yum makecache 的原因
- 清理旧缓存
yum clean all 会删除本地缓存的元数据(如软件包列表、版本信息),防止新旧源数据冲突。
示例:若旧缓存中记录的软件版本与新源不一致,可能导致依赖解析错误。 - 生成新缓存
yum makecache 从新配置的源下载元数据并生成本地缓存,作用包括:
加速操作:后续 yum install 或 yum update 直接从本地读取数据,减少网络请求耗时。
数据同步:确保本地缓存与远程仓库的软件包信息一致,避免因信息滞后导致安装失败。 - 验证配置有效性
执行 yum makecache 时若报错(如网络不通、DNS解析失败),可立即发现源配置问题
安装k8s集群前的操作系统配置
k8s集群要求centos系统版本在7.5以上
cat /etc/redhat-release
vim /etc/hosts 调整hosts配置
XXX master
XXX node1
XXX node2
时间同步:k8s要求集群节点实践必须精确一致
systemctl start chronyd
systemctl enable chronyd
date 查看时间
禁用iptables和firewalld服务
k8s&docker运行中产生大量iptables规则,为了不让系统规则混淆,直接关闭
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables
禁用selinux(如果不关闭安装集群过程中会产生各种问题)
getenforce查看开启状态若enforcing则开启中
setenforce 0只是临时关闭,重启后会恢复
vim /etc/selinux/config
selinux的值修改为disabled
然后重启操作系统才会生效
禁用swap分区(因为影响系统性能)
vim /etc/fstab 注释掉swap分区一行(/dev/mapper/centos-swap swap)
重启操作系统才会生效
free -m检测是否关闭(swap都是000是关闭的)
修改Linux内核参数,添加网桥过滤和地址转发功能
vim /etc/sysctl.d/kubernetes.conf添加如下配置
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
重新加载配置
sysctl -p
添加网桥过滤模块
modprobe br_netfilter
查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter
配置ipvs功能(k8s的service有iptables和ipvs两种代理模型,ipvs性能高,需要手动载入ipvs模块)
yum install ipset ipvsadmin -y
(这里需要添加阿里云的centos源)
添加需要加载的模块写入脚本文件
cat < /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe – ip_vs
modprobe – ip_vs_rr
modprobe – ip_vs_wrr
modprobe – ip_vs_sh
modprobe – nf_conntrack_ipv4
EOF
为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
执行脚本
/bin/bash /etc/sysconfig/modules/ipvs.modules
检查模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
安装docker
设置主机名
配置主机名解析
配置时间同步
DNS服务器:223.5.5.5
https://gitee.com/yooome/golang/blob/main/22-k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
cat < /etc/docker/daemon.json
{
“exec-opts”:[“native.cgroupdriver=systemd”],
“registry-mirrors”:[“https://j85j0k1y.mirror.aliyuncs.com”]
}
EOF
cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
KUBELET_CGROUP_ARGS=“–cgroup-driver=systemd”
KUBE_PROXY_MODE=“ipvs”
images=(
kube-apiserver:v1.17.4
kube-controller-manager:v1.17.4
kube-scheduler:v1.17.4
kube-proxy:v1.17.4
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in
i
m
a
g
e
s
[
@
]
;
d
o
d
o
c
k
e
r
p
u
l
l
r
e
g
i
s
t
r
y
.
c
n
−
h
a
n
g
z
h
o
u
.
a
l
i
y
u
n
c
s
.
c
o
m
/
g
o
o
g
l
e
c
o
n
t
a
i
n
e
r
s
/
{images[@]};do docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/
images[@];dodockerpullregistry.cn−hangzhou.aliyuncs.com/googlecontainers/imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/
i
m
a
g
e
N
a
m
e
k
8
s
.
g
c
r
.
i
o
/
imageName k8s.gcr.io/
imageNamek8s.gcr.io/imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
kubeadm init
–kubernetes-version=v1.17.4
–pod-network-cidr=10.244.0.0/16
–service-cidr=10.96.0.0/12
–apiserver-advertise-address=10.0.0.100
安装docker过程解析:添加docker yum源,安装docker,配置镜像加速,配置cgroup驱动
kube-flannel.yml
https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
Kubenetes—YAML语言:
zhangsan:
age:20
addr:china
sex:male
json&yaml相互转换:https://www.bairesdev.com/tools/json2yaml/
推荐格式:
zhangsan:
age:18
sex:male
address:China