ReadHat系列安装Kubernetes
设置对应主机名
每个节点分别设置对应主机名
主节点
hostnamectl set-hostname master
从节点
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
修改 hosts
所有节点都修改 hosts
echo "192.168.58.131 master" >> /etc/hosts
echo "192.168.58.135 node1" >> /etc/hosts
echo "192.168.58.136 node2" >> /etc/hosts
echo "192.168.58.137 node3" >> /etc/hosts
关闭 SELinux
所有节点关闭 SELinux
setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
添加 k8s 安装源
所有节点
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
mv kubernetes.repo /etc/yum.repos.d/
CentOS7必备前置:
tc 流量转发控制
sudo yum install -y yum-utils iproute-tc
sudo yum update -y
sudo yum clean all
sudo yum makecache fast
安装k8s所需组件
所有节点
v1.23以上版本
yum install -y kubectl kubelet kubeadm
or
yum install -y kubectl
yum install -y kubelet
yum install -y kubeadm
网络内核模块
tee /etc/modules-load.d/containerd.conf << EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
数据包转发
tee /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
重启
sysctl --system
生成containerd的默认配置文件
所有节点
containerd config default | tee /etc/containerd/config.toml
sed -i 's#registry.k8s.io/pause:3.6#registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9#g' /etc/containerd/config.toml
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
重启containerd
systemctl restart containerd
v1.23以上版本不包含dockershim, 旧版本如下
yum: 使用yum list <pack> --showduplicates
查找所有版本
yum list kubectl --showduplicates
yum list kubeadm --showduplicates
yum list kubelet --showduplicates
1.24.0版本带containerd
yum install -y kubelet-1.24.0 kubectl-1.24.0 kubeadm-1.24.0 containerd
1.22.4版本带docker
yum install -y kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4 docker-ce
添加 Docker 安装源
所有节点
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
检查安装
启动
启动kubelet、docker,并设置开机启动(所有节点)
systemctl enable kubelet --now
systemctl start kubelet
systemctl enable containerd --now
systemctl start containerd
(可选) 如果选择的是Docker
systemctl enable docker --now
systemctl start docker
检查是否加入自启
kubelet
systemctl is-enabled kubelet
( 可选) Docker
systemctl is-enabled docker
查看kubectl版本
kubectl version --client --output=yaml
验证kubectl配置
kubectl cluster-info
查看kubelet版本
kubelet --version
查看kubeadm版本
kubeadm version
修改 docker 配置
所有节点都需要 kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了
cat <<EOF > daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
mv daemon.json /etc/docker/
# 重启生效
systemctl daemon-reload
systemctl restart docker
关闭SWAP分区
注释SWAP行
vi /etc/fstab
示例: ![[Pasted image 20230419034510.png]]
配置k8s配置
主节点配置kube
其他节点需要访问集群,需要从主节点复制这个文件过去其他节点 在其他机器上创建 ~/.kube/config 文件也能通过 kubectl 访问到集群
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
初始化集群
根据你的主机类型选择一个方案, 只需要执行其一
不同云厂商的公网IP方案
- 建立虚拟机网卡(所有节点) 添加修改以下网卡配置
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 <<EOF
BOOTPROTO=static
DEVICE=eth0:1
IPADDR=<公网IP>
PREFIX=32
TYPE=Ethernet
USERCTL=no
ONBOOT=yes
EOF
(可选) centos8需要重启网络(所有节点)
systemctl restart network
- 查看是否生效(所有节点)
ip addr
- 修改kubelet启动参数文件(所有节点)
修改kubeadm配置, 替换
<公网IP>
为当前节点公网IP
echo >> /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --node-ip=<公网IP>
- 主节点(master)添加配置文件
内网方案
master主节点用kubeadm初始化
# 初始化集群控制台 Control plane
# 失败了可以用 kubeadm reset 重置
kubeadm init --image-repository=registry.aliyuncs.com/google_containers
(可选) 重新获取token:
kubeadm token create --print-join-command