可以考虑通过ansible实现k8s的安装,通过ansible的角色复用减轻后续工作!!
操作系统:Centos 7
第一步:kubelet不支持交换分区,需要将交换分区关掉
临时关闭:swapoff -a
永久关闭:vim fstab,将swap那行挂载去掉
第二步:关闭防火墙和SELinux,安全做法开防火墙上边的白名单端口。
但生产环境一般按照网络区域设置防火墙而不是主机层面,所以建议关掉
1、systemctl disable --now firewalld.service
2、vim /etc/selinux/config
将SELINUX禁用,可通过getenforce查看selinux状态
第三步:配置时间同步服务
建议通过chrony来配置成同一台时间同步服务器实现
第四步、配置yum源
1、http://mirrors.aliyun.com/repo/Centos-7.repo
2、http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、kukenetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
master节点安装docker、dockercri、kubeadm、kubectl、kubelet
node节点上安装docker、docker-cri、kubeadm、kubelet
docker-cri的安装会比较难,被墙了
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6-3.el7.x86_64.rpm
yum -y install cri-dockerd-0.2.6-3.el7.x86_64.rpm
systemctl enabled --now docker.service kubelet.service
第五步:配置docker-ce的镜像仓库为国内的开源镜像仓库,docker官方镜像仓库网速较差,我们需要设置国内镜像服务
/etc/docker/daemon.json
{
“registry-mirrors”: [“https://p1xjy9ro.mirror.aliyuncs.com”]
}
注意:需要重启docker服务生效
sudo systemctl daemon-reload
sudo systemctl restart docker
第六步:配置主机名
hostnamectl set-hostname k8s-master01
并配置相应的映射关系/etc/hosts
第七步:master节点上初始化kubernetes集群
kubeadm --v=6 init --kubernetes-version=v1.25.0 --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///var/run/cri-dockerd.sock
或者
kubeadm --v=6 init --config=init-defaults.yaml
清理初始化失败的kubernetes集群
kubeadm reset --cri-socket unix:///var/run/cri-dockerd.sock
第八步:安装网络插件
#安装网络插件(注意要过一会才会成功,可以看看pod创建成功没有还有就是镜像拉取是否正常)
kubectl apply -f “https://docs.projectcalico.org/manifests/calico.yaml”
第九步:配置访问
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown
(
i
d
−
u
)
:
(id -u):
(id−u):(id -g) $HOME/.kube/config
第十步:将新的node纳入集群
kubeadm token create --print-join-command
常见错误:
一、Oct 08 20:31:27 k8s-master01 kubelet[3189]: E1008 20:31:27.600468 3189 run.go:74] “command failed” err=“failed to load kubelet config file, error: failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file “/var/lib/kubelet/config.yaml”, error: open /var/lib/kubelet/config.yaml: no such file or directory, path: /var/lib/kubelet/config.yaml”
解决办法:执行kubeadm init就会生成相应的配置文件
二、Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the ‘criSocket’ field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock
To see the stack trace of this error execute with --v=5 or higher
解决办法:加选项指定使用的CRI
三、Error getting node" err=“node “k8s-master01” not found”
解决办法:这种情况是apiserver-advertise-address地址有误
kubeadm config print init-defaults > kubenetes-init-config
vim kubenetes-init-config
四、failed pulling image "registry.k8s.io/pause:3.6
cri-docker会去拉pause镜像,因为镜像库原因可能拉不成功,我们需要在cri-docker.service文件中配置相应的镜像地址
注意:–network-plugin=留空,不要和网上傻不拉几的去填cni。网络的等集群创建好在配置
sed -ie ‘s#ExecStart=.*#ExecStart=/usr/bin/cri-dockerd --network-plugin= --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8#g’ /usr/lib/systemd/system/cri-docker.service
github提供的镜像加速,下载github东西用这个前缀可以
https://ghproxy.com/
后续需要考虑高可用,就是多个master的情况。
还有就是定期的备份处理!!!
新增计算节点:
注:采用Docker Engine作为底层容器运行时
1、在你的每个节点上,遵循安装 Docker Engine 指南为你的 Linux 发行版安装 Docker。
2、按照源代码仓库中的说明安装 cri-dockerd。