一. 环境准备(每个节点都要做)
安装必要工具:
yum install -y ntpdate ntp wget lsof telnet yum-utils
更新系统上的所有软件包:
yum install -y update
分别为三台服务器设置不同的主机名
在192.168.192.131
hostnamectl set-hostname k8s-master
在192.168.192.132
hostnamectl set-hostname k8s-worker1
在192.168.192.133
hostnamectl set-hostname k8s-worker2
修改hosts文件,映射IP地址到对应的主机名,便于节点之间的通信
修改hosts文件,将hostname、ip更新至/etc/hosts文件中
cat >> /etc/hosts << EOF 192.168.192.131 k8s-master 192.168.192.132 k8s-worker1 192.168.192.133 k8s-worker2 EOF
时间同步:
ntpdate -u ntp.aliyun.com
禁用swap以避免性能问题:三台主机均关闭防火墙,selinux,并关闭swap分区
swapoff -a sed -ri 's/.swap./#&/' /etc/fstab
配置SELinux和防火墙
将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
关闭防火墙服务
systemctl disable firewalld systemctl status firewalld
配置允许 iptables 检查桥接流量
cat >> /etc/sysctl.conf << EOF vm.swappiness=0 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
加载流量控制的内核模块
modprobe overlay modprobe br_netfilter
使以上配置立即生效
sysctl --system
二.Docker安装(每个节点都要做)
添加Docker CE仓库
yum-config-manager
--add-repo
mirrors.aliyun.com/docker-ce/l…
yum makecache fast #安装前先更新yum软件包索引
安装Docker CE及相关组件:
docker-ce :docker 社区版
docker-ce-cli:操作 docker 服务的命令行程序
containerd.io:容器化的运行环境
yum install -y docker-ce docker-ce-cli containerd.io
修改daemon配置文件/etc/docker/daemon.json来使用加速器
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://*********.mirror.aliyuncs.com"] } EOF
重载并重启Docker服务
systemctl daemon-reload systemctl restart docker
配置 cri-dockerd
三.安装cri-dockerd(若要在 k8s 中使用 Docker 作为容器引擎,每个节点都要做)
从 k8s v1.24 发行版起,dockershim 组件被移除,若要在 k8s 中使用 Docker 作为容器引擎,需要先部署好 cri-dockerd。CRI 是容器运行时接口(Container Runtime Interface),cri-dockerd 是以 Docker 作为容器引擎而提供的容器运行时接口。
通过wget下载cri-dockerd
安装
rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm
配置
vi /usr/lib/systemd/system/cri-docker.service # 找到第10行ExecStart= 修改为 ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
重载系统守护进程→设置cri-dockerd自启动→启动cri-dockerd
systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker # 重启Docker组件
systemctl status docker cir-docker.socket cri-docker # 检查Docker组件状态
四.配置k8s源(每个节点都要做)
Kubernetes YUM源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=mirrors.aliyun.com/kubernetes/… enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=mirrors.aliyun.com/kubernetes/… mirrors.aliyun.com/kubernetes/… exclude=kubelet kubeadm kubectl EOF
五.Kubernetes 安装
安装Kubernetes Master组件(主节点操作)
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl daemon-reload systemctl start kubelet systemctl enable kubelet kubelet --version kubectl version kubeadm version
在主节点(192.168.192.131)上的操作初始化
apiserver-advertise-address:master节点的ip地址可以自行填写,
image-repository:镜像地址,可以填写国内镜像源的地址
service-cidr:集群的网段
pod-network-cidr:集群pod网段
cri-socket:socket接口
kubeadm init --apiserver-advertise-address=192.168.192.131 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock
执行完后,按照输出的指令执行配置登录选项:
mkdir -p HOME/.kube/config chown (id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf
部署网络插件(Flannel为例)
kubectl apply -f raw.githubusercontent.com/coreos/flan…
执行命令查看安装是否完成
watch kubectl get pod -n kube-system -o wide
输出中检查 CoreDNS Pod 的STATUS直到变成 Running 表示完成(需要几分钟)
在每个工作节点(192.168.192.132, 192.168.192.133)上的操作
安装Kubernetes Worker组件 yum install -y kubelet kubeadm --disableexcludes=kubernetes
在所有worker节点执行下面操作,将 worker 节点加入集群 kubeadm join 192.168.192.131:6443 --token m7r7hs.zppymcxc9izq2kmk --discovery-token-ca-cert-hash sha256:5ce19c4ac6ee2eaf0fec30b37833b05b8f7c5a6b5983d733b33e22431737e268
验证集群状态(在主节点上执行) kubectl get nodes 至此我们的k8s环境已搭建完毕,欢迎分享进群讨论.