虚拟机安装和基础配置
VisualBox安装三台虚拟机(CentOS7),一台Mater节点,两台worker节点。
网络设置为双网卡:
网卡1配置成桥接网卡,用来连接外网;
网卡2配置成Host-only网络或内部网络,用来做集群内网。
k8s在创建集群时还需要创建Pod网络,本文使用Calico插件自建网络。
Mater节点CPU至少使用2核,单核会导致k8s报错。
Mater节点修改主机名
hostnamectl --static set-hostname k8s.master
设置网卡2为固定ip(host-only网络默认192.168.56.x段,私有镜像仓库机的网卡2也是该网段)
ip addr
或ifconfig
查看网卡设备名
(网卡1设备名一般为enp0s3,网卡2设备名一般为enp0s8,请根据实际情况配置)
新增/etc/sysconfig/network-scripts/ifcfg-enp0s8文件,其中:
BOOTPROTO=static # 自动获取ip的话设置为dhcp,固定ip设置为static
以下信息按实际填写,uuid可以通过nmcli connection show
指令获得,MAC地址可以从ip addr
或ifconfig
指令获得。
NAME=k8s_internal
UUID=3b32f83f-abe0-3337-934b-15817cd31acb
DEVICE=enp0s8
ONBOOT=yes # 一定要配成yes,开机启动
IPADDR=192.168.56.111
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
HWADDR=08:00:27:67:9f:0c
[root@k8s_master ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=k8s_internal
UUID=3b32f83f-abe0-3337-934b-15817cd31acb
DEVICE=enp0s8
ONBOOT=yes
IPADDR=192.168.56.111
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
HWADDR=08:00:27:67:9f:0c
重启network或是虚拟机,就ok了。
(按照上面的步骤完成worker节点配置)
yum安装docker-ce,kubeadm,kubelet,kubectl
由于众所周知的原因,必须使用国内源才能保证下载安装顺利......
更新Docker源
在master和worker上执行:
cd /etc/yum.repos.d/
wget -c https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
创建Kubernetes源,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
安装、激活docker和kubelet
(注:
如果你的仓库里有k8s的旧版本镜像并且要使用,那么安装kubeadm kubelet kubectrl时必须指定跟旧版本镜像版本号一致的版本进行安装。
否则镜像与kube程序版本不一致,无法初始化集群)
yum install docker-ce
yum install kubeadm kubelet kubectl
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
修改系统参数。
#SELINUX
在文件中/etc/selinux/config 修改 SELINUX=permissive
#Firewall
systemctl disable firewalld && systemctl stop firewalld
#网络参数设置
sysctl -w net.bridge.bridge-nf-call-iptables=1
在文件中/etc/sysctl.d/k8s.conf 添加一行 net.bridge.bridge-nf-call-iptables=1
#关闭SWAP
swapoff -a
在文件中/etc/fstab中将swap所在行注释掉
修改/etc/hosts,将ip-域名对应关系添加进去。
192.168.56.111 k8s.master
192.168.56.112 k8s.nodea
192.168.56.113 k8s.nodeb
192.168.56.110 registry.phoenix.com
配置k8s Master节点
在master节点执行kubeadm config images list
,然后在镜像仓库机中下载输出的镜像:版本。
(再次注意kube-xxx的版本,所使用的image必须与所安装的kubeadm版本(kubeadm verison)一致,否则init失败(因为版本对不上,后面见log)):
[root@k8s ~]# kubeadm config images list
W0628 20:05:55.532126 4127 version.go:98] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
W0628 20:05:55.532420 4127 version.go:99] falling back to the local client version: v1.15.0
k8s.gcr.io/kube-apiserver:v1.15.0
k8s.gcr.io/kube-controller-manager:v1.15.0
k8s.gcr.io/kube-scheduler:v1.15.0
k8s.gcr.io/kube-proxy:v1.15.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
在镜像仓库机准备如下shell脚本文件并运行,到阿里云的镜像库pull所需镜像。
之后使用docker image ls可以看到下载好的镜像。
#! /bin/bash
images=(
kube-apiserver:v1.15.0
kube-controller-manager:v1.15.0
kube-scheduler:v1.15.0
kube-proxy:v1.15.0
pause:3.1
etcd:3.3.10
coredns:1.3.1
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
确认image已下载。
docker image ls
[root@webserver ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.15.0 d235b23c3570 8 days ago 82.4MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver v1.15.0 201c7a840312 8 days ago 207MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler v1.15.0 2d3813851e87 8 days ago 81.1MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager v1.15.0 8328bb49b652 8 days ago 159MB
registry latest f32a97de94e1 3 months ago 25.8MB
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns 1.3.1 eb516548c180 5 months ago 40.3MB
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd 3.3.10 2c4adeb21b4f 6 months ago 258MB
registry.cn-hangzhou.aliyuncs.com/google_containers/pause 3.1 da86e6ba6ca1 1