OR博客
k8s入门(一)搭建简单的k8s集群
苗锦洲
创建于:2021-09-25 16:47:55
0
33
270
0
使用vagrant在本地虚拟机搭建1master、1work的k8s集群,系统centos/8、默认网络插件:flannel、pod网段B类:172.20.0.0/16、svc网段A类:10.1.0.0/16

使用 Vagrant 在本地虚拟机搭建 1master、1work 的 k8s 集群,系统 centos/8、默认网络插件:flannel、pod 网段 B 类:172.20.0.0/16、svc 网段 A 类:10.1.0.0/16

目标

  1. 使用本地虚拟机搭建 1master、1work 的 k8s 集群

系统 centos/8、默认网络插件:flannel、pod 网段 B 类:172.20.0.0/16、svc 网段 A 类:10.1.0.0/16

ip hostname
192.168.56.100 master
192.168.56.101 work1
  1. 成功运行一个简单的 Web 服务,并通过ingress 访问

1. 环境准备

安装 Vagrant

2. 初始化虚拟机

2.1 新建 Vagrantfile 文件,文件如下

Vagrant.configure("2") do |config| (1..2).each do |i| config.vm.define "k8s-node#{i}" do |node| # 设置虚拟机的Box # 建议使用其他的,比如generic/centos8,磁盘空间70G,centos/8的磁盘只有10G,有坑 # 可以去https://app.vagrantup.com/boxes/search找 node.vm.box = "centos/8" # 设置虚拟机的主机名 # node.vm.hostname="k8s-node#{i}" # 这里有坑,注释掉,启动后进虚拟机手动修改 # 设置虚拟机的IP node.vm.network "private_network", ip: "192.168.56.#{99+i}", netmask: "255.255.255.0" # 设置主机与虚拟机的共享目录 # node.vm.synced_folder "~/Documents/vagrant/share", "/home/vagrant/share" # VirtaulBox相关配置 node.vm.provider "virtualbox" do |v| # 设置虚拟机的名称 v.name = "k8s-node#{i}" # 设置虚拟机的内存大小 v.memory = 2048 # 设置虚拟机的CPU个数 v.cpus = 2 end end end end

2.2 启动虚拟机

vagrant up

2.3 虚拟机参数调优

2.3.1 配置 host

先登录到 k8s-node1 节点

vagrant ssh k8s-node1

编辑 host 配置

vi /etc/hosts

添加

192.168.56.100 master 192.168.56.101 work1

设置 hostname

hostnamectl set-hostname master

对 work1 进行类似的操作

如果不想来回切换可以配置 2.3.7 SSH 免密登录,使用 ssh work1 "命令" 对 work1 进行操作

2.3.2 关闭防火墙

sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service

2.3.3 关闭 swap

  • 临时关闭
sudo swapoff -a
  • 永久关闭
    把/etc/fstab 中的 swap 注释掉
sudo sed -i 's/.*swap.*/#&/' /etc/fstab

2.3.4 禁用 selinux

  • 临时关闭
setenforce 0
  • 永久关闭
sudo sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

2.3.5 卸载 podman

centos8 默认安装了 podman 容器,它和 docker 可能有冲突需要卸载掉

sudo yum remove podman

2.3.6 时间同步

CentOS8 系统时间同步解决方法 - linuxTang - 博客园 (cnblogs.com)

2.3.7 SSH 免密登录(可选)

SSH 三步解决免密登录_jeikerxiao-CSDN 博客_ssh 免密登录

2. 安装 k8s

2.1 配置系统基本安装源

sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

2.2 添加 K8S 安装源

将如下内容保存到:/etc/yum.repos.d/kubernetes.repo

[kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

由于目前阿里镜像中还没有 CentOS8 的 kubernetes,但是可以使用 CentOS7 的安装包,所以上面是使用的 kubernetes-el7-x86_64,如果有 CentOS8 的,则为 kubernetes-el8-x86_64。

2.3 安装 Docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum -y install docker-ce

启动

systemctl start docker systemctl enable docker

2.3.1 配置镜像加速

为了 docker 加速 pull,可以设置阿里云加速:

参考 容器镜像服务 (aliyun.com) 镜像工具中的镜像加速器

  1. 安装/升级 Docker 客户端

推荐安装 1.10.0 以上版本的 Docker 客户端,参考文档 docker-ce

  1. 配置镜像加速器

针对 Docker 客户端版本大于 1.10.0 的用户

您可以通过修改 daemon 配置文件/etc/docker/daemon.json 来使用加速器

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://08estd8l.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

2.3.2 修改 dockerCgroup Driver

不修改的话安装会出现 Warning

[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”.

出现[WARNING IsDockerSystemdCheck],是由于 docker 的 Cgroup Driver 和 kubelet 的 Cgroup Driver 不一致导致的,此处选择修改 docker 的和 kubelet 一致

查看 docker 信息:

docker info | grep Cgroup

可以看到驱动为 Cgroup,需要改为 systemd。

  1. 编辑文件/usr/lib/systemd/system/docker.service,在 ExecStart 命令中添加
--exec-opt native.cgroupdriver=systemd
  1. 然后重启 docker,再查看信息,可以看到已经变为 systemd 了
systemctl daemon-reload systemctl restart docker docker info | grep Cgroup

2.4 安装 kubectl、kubelet、kubeadm

安装 kubectl、kubelet、kubeadm,设置 kubelet 开机启动,启动 kubelet。

sudo yum install -y kubectl kubelet kubeadm sudo systemctl enable kubelet sudo systemctl start kubelet

查看 K8S 版本

kubeadm version kubectl version --client kubelet --version

3. 初始化 kubernetes 集群

3.1 初始化 master 节点

由于 kubeadm 默认从官网 k8s.grc.io 下载所需镜像,国内无法访问,因此需要通过–image-repository 指定阿里云镜像仓库地址。

kubeadm init --apiserver-advertise-address=192.168.56.100 \ --image-repository registry.aliyuncs.com/google_containers \ --service-cidr=10.1.0.0/16 \ --pod-network-cidr=172.20.0.0/16 \ --ignore-preflight-errors=all \ --kubernetes-version=v1.21.0

上述命令执行成功后 ,保存以下命令,用于 work1 节点加入 master 节点

kubeadm join 192.168.56.100:6443 --token scyf66.3hliffdr1ki8pqy6 \ --discovery-token-ca-cert-hash sha256:8b49303c81a06cbf23177f801257990f71c26736b7139e837a624263329c4537

如果忘记保存可以使用这个查看

kubeadm token create --print-join-command

再根据提示执行

mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config

安装网络插件 Flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

查看是否成功创建 flannel 网络

ifconfig | grep flannel

3.2 初始化 work1 节点

3.2.1 kubadm join 加入集群

3.2.2 安装 flannel 网络插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

master 节点执行

kubectl get nodes

查看 node 节点处于 ready 状态

参考链接

  1. 使用 vagrant 搭建 k8s 集群_阿磊的博客-CSDN 博客_vagrant 部署 k8s
  2. CentOS8 下超详细安装配置 kubernetes(K8S)_Witton 的专栏-CSDN 博客_centos8 安装 k8s
  3. CentOS8 系统时间同步解决方法 - linuxTang - 博客园 (cnblogs.com)
  4. SSH 三步解决免密登录_jeikerxiao-CSDN 博客_ssh 免密登录
  5. Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 解决方法_albertjone 的博客-CSDN 博客
  6. 容器镜像服务 (aliyun.com)
  7. k8s【如果忘记 master 节点 init 后 join 命令怎么办】_Happywzy~的博客-CSDN 博客
评论
楼主暂时不想被别人评论哦~