LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

Kubernetes 安装

Kubernetes 从 1.24 开始不支持 Docker,而且需要加载更多的内核模块,当然就意味着更加成熟强大。

以 Debian 用 kubeadm 安装 1.24 版本为例子。

系统准备

安装依赖包

apt install -y ipset ipvsadm conntrack socat

加载内核模块

1.24 版本需要以下内核模块:

  • ip_vs
  • ip_vs_rr
  • ip_vs_wrr
  • ip_vs_sh
  • nf_conntrack
  • br_netfilter
  • overlay

加载并且设置自动加载:

for i in ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack br_netfilter overlay; do modprobe $i && echo $i >> /etc/modules-load.d/modules.conf; done

系统配置

cat << EOF >> /etc/sysctl.conf
net.netfilter.nf_conntrack_max = 524288
net.nf_conntrack_max = 524288
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
kernel.panic_on_oops = 1
kernel.panic = 10
vm.overcommit_memory = 1
EOF
sysctl -p

安装配置

容器

apt install -y containerd

生成默认配置:

containerd config default > /etc/containerd/config.toml

更换镜像源:

sed -i 's|k8s.gcr.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml

改为 cgroup:

sed -Ei 's/(.*\.runc\.options\])/\1\n            SystemdCgroup = true/g' /etc/containerd/config.toml 

重启:

systemctl restart containerd

使用 ctr 操作 containerd。

kubeadm

更换下载源:

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update

安装:

apt-get install -y kubelet kubeadm kubectl

安装后会有 crictl 操作 k8s 容器的命令,配置和 containerd 的信息:

crictl config runtime-endpoint unix:///run/containerd/containerd.sock
crictl config image-endpoint unix:///run/containerd/containerd.sock

生成默认配置并替换镜像源:

kubeadm config print init-defaults | sed 's|k8s.gcr.io|registry.aliyuncs.com/google_containers|g' > kube-default.yaml

根据新生的配置拉取镜像:

kubeadm config images pull --config kube-default.yaml

将当前 IP 写入配置,该 IP 需是一个固定入口:

sed -i 's/advertiseAddress: .*/advertiseAddress: '`hostname -I | awk '{print $1}'`'/g' kube-default.yaml

指定容器的网络段,这里用的是 flannel 的 IP 范围:

sed -i '/networking/a \  podSubnet: 10.244.0.0/16' kube-default.yaml

更改节点的名称:

sed -Ei "s/(\ +name: ).*/\1 `hostname`/g" kube-default.yaml

使用配置初始化:

kubeadm init --config kube-default.yaml

这时 coredns 会一直挂起,除非定义了网络,可以选择安装 flannel:

curl https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml > flannel.yaml
kubectl apply -f flannel.yaml

过程遇见问题,可以 journel -xeu kubeletkubectl describe 来排查。