部署
部署部分海量借鉴了 如何在 Ubuntu 22.04 上安装 Kubernetes 集群 – Linux迷 (linuxmi.com)
Ubuntu22.04 部署 3 节点 k8s 集群, 1 master + 2 node
0.设置主机名,每台都修改
sudo hostnamectl set-hostname "master01"
#这里也可以手动修改 /etc 下的 hosts 和 hostname 文件。
1.禁用 swap
sudo swapoff -a
sudo sed -i '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab
2.在所有节点上加载内核模块
sudo tee /etc/modules-load.d/containerd.conf << EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
3.为 Kubernetes 设置以下内核参数,在 tee 命令下运行
sudo 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
重新加载上述更改,运行
$ sudo sysctl --system
4. 安装 contarined
现在,运行以下 apt 命令来安装 containerd
sudo apt update
sudo apt install -y containerd.io
配置 containerd 以便它开始使用 systemd 作为 cgroup。
$ containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
$ sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
重启并启用容器服务
$ sudo systemctl restart containerd
$ sudo systemctl enable containerd
接着编辑/etc/containerd/config.toml文件,把[plugins."io.containerd.grpc.v1.cri"]块下的sandbox_image值改为国内镜像即可,如下方代码所示(pause版本因人而异):
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"
5. 使用阿里云添加apt repository for Kubernetescurl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
安装kubernetes组件Kubectl, kubeadm & kubeletsudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
// apt-mark 用于将软件包标记/取消标记为自动安装。 hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。
————
至此基本的部署就完成了,注意一点就是要把默认的 gcr.io 源给换成国内源。
参考这个地方把 containerd 的源进行更新。
dashboard 配置
目前 dashboard 需要 https 访问或者只能从 http://localhost:8001 访问,非常“安全”。这里我试了 iptables nat 策略把 0.0.0.0:8001 转发到 127.0.0.1:8001 ,无法访问。也试过
kubectl proxy –address=’0.0.0.0′ –accept-hosts=’^*$’ 这个方式来监听 0.0.0.0 ,然而官方不支持
具体的一些配置方法可以参考 Deploy and Access the Kubernetes Dashboard | Kubernetes 以及需要配置用户 dashboard/docs/user/access-control/creating-sample-user.md at master · kubernetes/dashboard (github.com)
endpoints 是