K8S环境搭建第一篇

利用virtualBox和vagrant搭建K8S集群简要步骤:

一、Vagrantfile

Vagrant.configure("2") do |config|
   (1..3).each do |i|
        config.vm.define "k8s-node#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos/7"

            # 设置虚拟机的主机名
            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

我电脑就16G的内存,有些勉强,虚拟机内存大小就设置2G好了。

cmd窗口运行:vagrant up

二、开启密码访问

开启密码访问的目的主要就是方便用XShell来直接连接。

PS D:\programtools\k8s> vagrant ssh k8s-node1
[vagrant@k8s-node1 ~]$ su root
Password: vagrant

[root@k8s-node1 vagrant]# vi /etc/ssh/sshd_config
[root@k8s-node1 vagrant]# grep 'PasswordAuth' /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication yes
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication, then enable this but set PasswordAuthentication
[root@k8s-node1 vagrant]#

把这个no 改为 yes

K8S环境搭建第一篇

 

[root@k8s-node1 vagrant]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service

记得重启这个服务。或者重启虚拟机也是一样。

K8S环境搭建第一篇

 

 

 

 三、设置虚拟机网络

1. 管理 --> 全局设定-->网络

K8S环境搭建第一篇

 

2. 针对每一个node,网络设置选择NAT网络,记得重新生成一个mac地址,否则会缓存使用到之前老的

K8S环境搭建第一篇

 

最终需要的效果,默认网卡的ip不相同。因为都在一个机器上,摒弃原来一个ip端口转发的方式。默认网卡之间的ip都能相互ping通。K8S环境搭建第一篇

 

 

 

 四、设置linux环境

关闭防火墙和linux默认安全策略,这样就可以较少我们之后因为安全策略导致的一些麻烦。

[root@k8s-node3 ~]# systemctl stop firewalld
[root@k8s-node3 ~]# systemctl disable firewalld
[root@k8s-node3 ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config

[root@k8s-node3 ~]# swapoff -a

[root@k8s-node3 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# disabled - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of disabled.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

关闭swap(内存交换)

[root@k8s-node3 ~]# swapoff -a
[root@k8s-node3 ~]# setenforce 0  临时
[root@k8s-node3 ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab  永久
[root@k8s-node3 ~]# free -g  验证swap必须是0
total used free shared buff/cache available
Mem: 1 0 1 0 0 1
Swap: 0 0 0

五、添加主机名与ip的对应关系

首先,每一个主机的名字不能是localhost

[root@k8s-node2 ~]# hostname
k8s-node2

如果按上述步骤应该是没问题的,如果有问题,可以尝试修改:

hostnamectl set-hostname <newhostname>

 其次,添加主机名与ip的对应关系,ip用的是默认网卡的

vi /etc/hosts

10.0.2.5 k8s-node1

10.0.2.4 k8s-node2

10.0.2.15 k8s-node3

修改每个主机的host的文件,让他们能够互相感知对方, 如果能够在k8s-node1  ping k8s-node3 ping通了,上述配置正确

接下来,将桥接IPV4流量传递到iptables的链:

[root@k8s-node1 ~]# cat > /etc/sysctl.d/k8s.conf << EOF
> net.bridge.bridge-nf-call-ip6tables = 1
> net.bridge.bridge-nf-call-iptables = 1
> EOF
[root@k8s-node1 ~]# sysctl --system

 

最后备份以下当前环境:

K8S环境搭建第一篇

 

上一篇:FLUKA-Cern的安装(windows 7 vagrant)


下一篇:Vagrant 相关基础使用