- 环境筹备
装置Oracle 8.6
, 留神此处抉择Minimal Install
。
-
装置结束后执行命令装置一些必要组件。
dnf update -y && reboot #更新零碎到最新 dnf remove firewalld #卸载不须要的组件 dnf install vim wget nc socat tc ebtables iptables-* conntrack ipvsadm #装置必要组件
-
显式加载
br_netfilter
模块:cat > /etc/rc.sysinit << EOF #!/bin/bash for file in /etc/sysconfig/modules/*.modules ; do [-x \$file] && \$file done EOF
cat > /etc/sysconfig/modules/br_netfilter.modules << EOF modprobe br_netfilter EOF
chmod +x /etc/sysconfig/modules/br_netfilter.modules
-
调整零碎设置:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #敞开 Selinux sed -i '/swap/s/^/#/' /etc/fstab #关闭系统替换分区
-
容许 iptables 查看桥接流量:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl --system
-
容许流量转发:
grep 'net.ipv4.ip_forward = 1' /etc/systcl.conf || echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf sysctl -p
-
棘手改下名字:
hostnamectl set-hostname node0 #依照本人需要,在 hosts 外面加上其余节点的 IP 和名字
- 装置容器运行时
最新的 k8s1.24X 版本曾经不再反对Docker Engine
,这里选用containerd
作为容器运行时。装置步骤参考 https://github.com/containerd…,不再赘述。只需注意以下几点:
- 间接依照
Option 1: From the official binaries
的指引装置,先装置containerd
,配置systemd
, 再装置runc
, 最初装置CNI plugins
。 - 须要手工创立
/usr/local/lib/systemd/system/
目录以搁置service
文件。 -
须要手工创立
/etc/containerd/
目录,而后运行containerd config default > /etc/containerd/config.toml
生成配置文件。
-
在
/etc/containerd/config.toml
中指定Cgroup
驱动, 而后重启containerd
服务[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] ... [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true
- 装置 k8s
k8s 的官网文档提供了三种装置形式。通过实际,还是举荐应用无包管理器的形式。不论是 yum
还是apt
, 采纳的源都是google
的官网源。出于家喻户晓的起因,拜访起来十分麻烦,还是间接应用无包治理的形式。以下装置步骤间接从官网搬运过去:
-
装置
crictl
(kubeadm
/kubelet
容器运行时接口(CRI
)所需)CRICTL_VERSION="v1.22.0" ARCH="amd64" curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
-
装置
kubeadm
、kubelet
、kubectl
并增加kubelet
零碎服务:RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)" ARCH="amd64" cd $DOWNLOAD_DIR sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl} sudo chmod +x {kubeadm,kubelet,kubectl} RELEASE_VERSION="v0.4.0" curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service sudo mkdir -p /etc/systemd/system/kubelet.service.d curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
-
激活并启动 kubelet:
systemctl enable --now kubelet
此时,如果是采纳了虚拟机,就能够 clone 这台机器作为其余节点了。
4. 初始化集群
-
拉取相干镜像:
kubeadm config images pull --image-repository k8s-gcr.m.daocloud.io #基于所有人都晓得的起因,这里抉择了国内源
-
批改
containerd
配置:crictl img |grep pause #查看 pause 镜像名 cat /etc/containerd/config.toml |grep pause #察看 pause 的镜像名。将 /etc/containerd/config.toml 中 pause 镜像名批改为 crictl img |grep pause 的输入后果。
-
初始化集群:
kubeadm init --control-plane-endpoint 10.0.0.50 --pod-network-cidr=192.168.0.0/16 --image-repository k8s-gcr.m.daocloud.io --v=9 #其中 control-plane-endpoint 的值为管制主机的地址。--pod-network-cidr 按需配置。
-
装置
CNI
插件Calico
:kubectl create -f https://projectcalico.docs.tigera.io/manifests/tigera-operator.yaml kubectl create -f https://projectcalico.docs.tigera.io/manifests/custom-resources.yaml #默认应用 192.168.0.0/16,如果不是,须要先把 custom-resources.yaml 下载下来,将 ipPools 项中的值批改成理论值。
-
察看一下集群状态:
kubectl get nodes #个别过几分钟即可。
等所有状态变为
Ready
即可。
- 其余
想起来再增加。