此文用的k8s为1,13,1(网络需要能访问k8s.gcr.io)
准备两个个虚拟机(此处用vagrant)
vagrant init envimation/ubuntu-xenial
修改Vagrantfile
配置网络模式和Ip
config.vm.network "public_network", ip:"192.168.1.30"
配置内存大小,此处2G
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
vagrant ssh
安装指定版本docker
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu(可通过sudo apt-cache policy docker-ce查看所有版本并选择合适的,此处是k8s支持到18.06所以选择这个版本)
安装kubeadm,kubectl,kubelet
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
安装 k8s
kubeadm init --kubernetes-version=v1.13.1 --apiserver-advertise-address=192.168.1.30 --pod-network-cidr=10.244.0.0/16
安装网络插件
sysctl net.bridge.bridge-nf-call-iptables=1
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
配置(kubectl会使用到,把这个文件拷贝到其他机器,安装好kubectl也可以访问)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装node节点
在第二台虚拟机上执行(以上的命令是在第一台虚拟机kubeadmin 初始化结束后返回的)
提示:此处记得加上node-name参数或者修改hostname(因为主机名默认是相同的,会有冲突)
kubeadm join 192.168.1.30:6443 --token uatpe3.t43t7omocf738o3k --discovery-token-ca-cert-hash sha256:a361b23821b2be1c9066feed6edce44508a6743bf5a1ae07ad7387472e855989 -node-name test
验证
kubectl get nodes
显示
NAME STATUS ROLES AGE VERSION
base-debootstrap Ready master 11m v1.13.1
test Ready <none> 4m17s v1.13.1
遇到问题
1 token 失效时间默认24小时
可以创建永不过期token
kubeadm token create --ttl 0