网络配置
首先要设置宿主机和虚拟机的静态 ip,并且要实现 3 个方向能够 ping 成功:
1 宿主机 ping 虚拟机
2 虚拟机1 ping 虚拟机 2
3 虚拟机 ping 因特网
根据我们要实现的目标我们可以使用 Bridged 方式设置一张网卡,或者使用 Host-only 和 NAT 方式设置两张网卡。
NAT
第一步:打开virtualbox -》 管理 -》 全局设定 -》 网络 -》 新建一个网卡(默认名称为NATNetwork)
-》 双击NATNetwork网卡 -》启用网络 -》 网络CIDR : 192.168.100.0/24(这个网段看情况配置就好,不强求一模一样) -》 仅勾上 支持DHCP
第二步:打开virtualbox -》 设置 -》 网络 -》 网卡1 选择NAT 网络 -》 界面名称选择:NATNetwork
-》网卡2选择 仅主机(Host-Only)网络 -》 界面名称选择 : Virtualbox Host-Only Ethernet Adapter
host-only(用于ssh)
第一步:打开virtualbox -》 管理 -》 主机网络管理器 -》 选择手动配置网卡 -》 IPv4地址: 192.168.56.1(IP地址随意,不必与我一样)-》 IPv4网络掩码:255.255.255.0 -》
第二步:选择DHCP服务器 -》 启动服务器 -》 服务器地址 192.168.56.66(随便啦,与上面的192.168.56.1同一个网段就好)-》服务器掩码 255.255.255.0 -》 最小地址 192.168.56.67 -》 最大地址 192.168.56.254
第三步:配置网卡1,即host-only,我的宿主系统是win10,在win10里,找到对应的Virtualbox Host-Only Ethernet Adapter网卡,使用以下IP地址:192.168.56.1(没错,这就是第二部分第一步里的那个地址) -》 子网掩码255.255.255.0,其它的不管,空着就好。
第四步: 进入虚拟机,vi /etc/sysconfig/network-scripts/ifcfg-eth1
如下配置:
DEVICE=eth0 //不用管它
HWADDR=xxxxxxxxxxxxx //不用管它
UUID=xxxxx //不用管它
TYPE=xxxxx //不用管它
ONBOOT=YES
BOOTPROTO=static
IPADDR=192.168.56.104
NETMASK=255.255.255.0
第五步:保存并退出vi模式 -》 service network restart -》
docker 和 k8s安装
docker
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
列出版本号:
yum list docker-ce --showduplicates | sort -r
yum install docker-ce-18.06.1.ce
开机启动:
systemctl start docker
systemctl enable docker
镜像加速:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ee4wixkc.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
k8s
配置yum源:
cat <<EOF > /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
EOF
安装并开机自启
yum install -y kubelet-1.16.3-0 kubeadm-1.16.3-0 kubectl-1.16.3-0
systemctl enable kubelet && systemctl start kubelet
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
禁用SELINUX
# 临时禁用
setenforce 0
# 永久禁用
vim /etc/selinux/config # 或者修改/etc/sysconfig/selinux
SELINUX=disabled
修改k8s.conf文件
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
开启ipv4转发
vi /etc/sysctl.conf
内容如下:
net.ipv4.ip_forward = 1
刷新参数
sysctl -p
关闭swap
# 临时关闭
swapoff -a
修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载(永久关闭swap,重启后生效)
# 注释掉以下字段
/dev/mapper/cl-swap swap swap defaults 0 0
创建工作目录:
mkdir ~/k8s
cd ~/k8s
生成配置文件:
kubeadm config print init-defaults ClusterConfiguration > kubeadm.conf
修改文件kubeadm.conf中的IP地址
#修改IP地址为master节点的IP地址
localAPIEndpoint:
advertiseAddress: 192.168.32.132
#配置pod地址
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
拉镜像
kubeadm config images pull --config kubeadm.conf
kubeadm init --config kubeadm.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.2:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:e37c1aa69c99863dc5a37e6c3daf4b40dd1cd2f4ad77e7759bcbe5abc80899e8
开机自启
sudo systemctl enable kubelet
sudo systemctl start kubelet
先配置内部通信 flannel 网络:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
确保kubeadm.conf中的podsubnet的地址和kube-flannel.yml中的网络配置一样
加载配置
kubectl apply -f kube-flannel.yml
重启kubelet
systemctl restart kubelet
把配置文件从master节点复制到node1和node2
scp /etc/kubernetes/admin.conf root@node1:/root/k8s/
scp /root/k8s/kube-flannel.yml ubuntu@node1:/root/k8s/
重复master的配置
并且输入
kubeadm join 192.168.1.2:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:e37c1aa69c99863dc5a37e6c3daf4b40dd1cd2f4ad77e7759bcbe5abc80899e8