请问您今天要来点 k8s 吗

部署

部署部分海量借鉴了 如何在 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 Kubernetes
curl 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 & kubelet
sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

// apt-mark 用于将软件包标记/取消标记为自动安装。 hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。

————

至此基本的部署就完成了,注意一点就是要把默认的 gcr.io 源给换成国内源。

参考这个地方把 containerd 的源进行更新。

registry.k8s.io/pause:3.6 does not use the address specified by –image-repository when executing kubeadm init · Issue #2851 · kubernetes/kubeadm (github.com)

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 是

Proudly powered by WordPress | Theme: Code Blog by Crimson Themes.