轻松搭建kubernetes(k8s)环境并使用KubeVirt虚拟化管理

    xiaoxiao2023-10-03  152

    搭建kubernetes(k8s)环境前提

    我用的是操作系统是centos7.6,搭建k8s环境需要修改一些基本系统配置

    # 关闭Selinux/firewalld systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config # 关闭交换分区 swapoff -a yes | cp /etc/fstab /etc/fstab_bak cat /etc/fstab_bak |grep -v swap > /etc/fstab # 设置网桥包经IPTables,core文件生成路径 echo """ vm.swappiness = 0 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 """ > /etc/sysctl.conf modprobe br_netfilter sysctl -p # 同步时间 yum install -y ntpdate ntpdate -u ntp.api.bz # 安装内核组件 rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm yum -y --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml # 启用最新的内核 awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg grub2-set-default 0 grub2-mkconfig -o /boot/grub2/grub.cfg reboot uname -a # 确认内核版本后,开启IPVS cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack" for kernel_module in \${ipvs_modules}; do /sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1 if [ $? -eq 0 ]; then /sbin/modprobe \${kernel_module} fi done EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

    安装配置Docker

    Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables filter表中FOWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信,因此docker安装完成后,还需要手动修改iptables规则。

    1. 主机名配置和hosts配置

    # 主机名配置(因为K8S的规定,主机名只支持包含 `-` 和 `.`(中横线和点)两种特殊符号,并且主机名不能出现重复) hostnamectl set-hostname ip-192-168-217-130 #编辑hosts 192.168.217.130 ip-192-168-217-130

    2. 时间、时区、系统语言

    查看时区

    date -R或者timedatectl

    修改时区

    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    修改系统语言环境

    sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile

    3. Docker CE安装与配置(国内阿里云源)

    建议CentOS用户使用非root用户来运行docker,比如我创建并切换yinjj用户进行docker ce安装

    # 添加用户(可选) sudo adduser yinjj # 为新用户设置密码 sudo passwd yinjj # 为新用户添加sudo权限 sudo echo 'yinjj ALL=(ALL) ALL' >> /etc/sudoers # 卸载旧版本Docker软件 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ container* # 定义安装版本 export docker_version=18.06.3 # step 1: 安装必要的一些系统工具 sudo yum remove docker docker-client docker-client-latest \ docker-common docker-latest docker-latest-logrotate \ docker-logrotate docker-engine -y; sudo yum update -y; sudo yum install -y yum-utils device-mapper-persistent-data \ lvm2 bash-completion; # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo; # Step 3: 更新并安装 Docker-CE sudo yum makecache all; version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}'); sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version}; # 如果已经安装高版本Docker,可进行降级安装(可选) yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version}; # 把当前用户加入docker组 sudo usermod -aG docker yinjj; # 编辑systemctl的Docker启动文件和配置文件 sudo sed -i "13i ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT" /usr/lib/systemd/system/docker.service sudo mkdir -p /etc/docker sudo touch /etc/docker/daemon.json sudo cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF # 启动docker sudo systemctl daemon-reload sudo systemctl enable docker sudo systemctl start docker

    安装kubernetes(k8s)

    安装k8s集群的方法多达几十种,因为我们已经配置好了系统的基础环境和docker环境,这里博主先介绍一种办法,如果以后有时间还会在这里更新

    1. 通过Minikube 安装 Kubernetes本地实验环境

    1.先检测你的系统或者虚拟机是否开启嵌套虚拟化

    #1.检查cup是否支持虚拟化 $ egrep "(svm|vmx)" /proc/cpuinfo $ #返回文本中有vmx或者svm,则支持虚拟化。 #2.检查是否加载KVM模块 $ lsmod | grep kvm kvm_intel 172032 0 kvm 544768 1 kvm_intel irqbypass 16384 1 kvm #有上面信息输出 则成功 #3. 检查是否打开了嵌套虚拟机功能 $ cat /sys/module/kvm_intel/parameters/nested N #如果显示结果不是 Y 的话需要开启 nested: $ vi /etc/modprobe.d/kvm-nested.conf options kvm-intel nested=1 options kvm-intel enable_shadow_vmcs=1 options kvm-intel enable_apicv=1 options kvm-intel ept=1 $ modprobe -r kvm_intel $ modprobe -a kvm_intel $ cat /sys/module/kvm_intel/parameters/nested Y #再次检查输出为Y则已开启嵌套虚拟机功能

    2.安装 Kubernetes本地实验环境

    #由于墙的问题,可以下载阿里云的minikube curl -Lo minikube http://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.0.1/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ #推荐使用kvm2驱动 $ sudo yum install libvirt-daemon-kvm qemu-kvm $ curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \ && sudo install docker-machine-driver-kvm2 /usr/local/bin/ #启动libvirtd $ sudo systemctl enable libvirtd.service $ sudo systemctl start libvirtd.service $ sudo systemctl status libvirtd.service #将您的用户添加到`libvirt`组(较旧的发行版可能会使用`libvirtd`) $ sudo usermod -a -G libvirt $(whoami) $ newgrp libvirt #直接使用minikube安装k8s环境了 $ minikube start #如果minikube start报错以下错误 error: failed to get network 'default' error: 未找到网络: 没有网络与名称 'default' 映射 执行命令 $ sudo yum install libvirt-daemon-config-network

    KubeVirt环境安装

    $ minikube config -p kubevirt set memory 4096 $ minikube config -p kubevirt set vm-driver kvm2 $ minikube start -p kubevirt #安装KubeVirt $ export KUBEVIRT_VERSION="v0.15.0" $ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-operator.yaml $ kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/kubevirt-cr.yaml #查看kubevirt是否都启动了 $ kubectl get pods -n kubevirt NAME READY STATUS RESTARTS AGE virt-api-649859444c-fmrb7 1/1 Running 0 2m12s virt-api-649859444c-qrtb6 1/1 Running 0 2m12s virt-controller-7f49b8f77c-kpfxw 1/1 Running 0 2m12s virt-controller-7f49b8f77c-m2h7d 1/1 Running 0 2m12s virt-handler-t4fgb 1/1 Running 0 2m12s virt-operator-6c5db798d4-9qg56 1/1 Running 0 6m41s #下载 virtctl $ curl -L -o virtctl \ https://github.com/kubevirt/kubevirt/releases/download/${KUBEVIRT_VERSION}/virtctl-${KUBEVIRT_VERSION}-linux-amd64 $ chmod +x virtctl #部署vm $ kubectl apply -f https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml #查看vms资源列表 $ kubectl get vms # 启动vm $ ./virtctl start testvm #命令行模式进入刚刚创建的vm $ ./virtctl console testvm
    最新回复(0)