使用Ubuntu 20.04
apt install -y docker.io
wget https://storage.googleapis.com/golang/getgo/installer_linux
chmod +x ./installer_linux
./installer_linux
source ~/.bash_profile
git clone https://github.com/Mirantis/cri-dockerd.git
cd cri-dockerd
mkdir bin
go build -o bin/cri-dockerd
mkdir -p /usr/local/bin
install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
cp -a packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket
修改/etc/systemd/system/cri-docker.socket服务,将docker变成root。
创建软连接
然后重启服务服务
查看这两个服务是否正常
安装crictl
查看可支持的版本
启动集群
查看pods
启动metrics
启动仪表盘
配置对外端口
访问URL
三台使用Ubuntu 20.04。
三台都要装
注意: Docker 引擎不实现CRI ,这是容器运行时与 Kubernetes 一起工作的要求。因此, 必须安装额外的服务cri-dockerd 。cri-dockerd 是一个基于遗留内置 Docker 引擎支持的项目,该支持已在 1.24 版中从 kubelet 中删除。
安装go语言
安装cri-docker
修改/etc/systemd/system/cri-docker.socket 中SocketGroup组为root
重新读取配置文件,设置开机启动以及立刻运行服务。
安装 kubeadm、kubelet 和 kubectl
您将在所有机器上安装这些软件包:
kubelet:在集群中的所有机器上运行并执行诸如启动 pod 和容器之类的组件。
kubectl:用于与您的集群对话的命令行实用程序。
切换到国内源
将 SELinux 设置为 permissive 模式(相当于将其禁用)
通过运行命令 setenforce 0 和 sed ... 将 SELinux 设置为 permissive 模式可以有效地将其禁用。 这是允许容器访问主机文件系统所必需的,而这些操作是为了例如 Pod 网络工作正常。
关闭swap分区
关闭防火墙
查看支持的版本
kubeadm init 是一个用于初始化 Kubernetes 集群的命令。当你运行 kubeadm init 时,它会在你运行该命令的节点上创建一个新的集群。
你可以使用 --cri-socket 参数来指定要使用的容器运行时接口 (CRI) 的套接字。CRI 是 Kubernetes 与容器运行时(例如 Docker 或 containerd)进行通信的接口。
你也可以使用 --control-plane-endpoint 参数来指定集群的控制平面端点的 IP 地址和端口。控制平面是集群的中枢,负责管理集群的状态并在节点上调度工作负载。
master节点初始化
复制凭据
重置
这时候coredns是还没有启动
下载配置文件
修改kube-flannel.yml中的Network的值,要与初始化时的参数--pod-network-cidr的值一致
运行flannel
默认情况下,出于安全原因,您的集群不会在控制平面节点上调度 Pod。如果您希望能够在控制平面节点上调度 Pod,例如对于单机 Kubernetes 集群,请运行:
两个node节点加入到master节点
如果出现[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
查看节点状态
由于集群节点通常是按顺序初始化的,CoreDNS Pod 很可能都运行在第一个控制面节点上。 为了提供更高的可用性,请在加入至少一个新节点后 使用 kubectl -n kube-system rollout restart deployment coredns 命令,重新平衡这些 CoreDNS Pod。