..

基于 vagrant 的 k8s 安装过程

使用 vagrant 创建三个虚拟机

  1. 安装我们即将用到的工具
yum install git vim java groovy net-tools -y

安装 docker-ce

  1. 我们使用阿里云的 docker-ce 源代来安装
# 安装最新版本
yum install docker-ce

我们安装 k8s 相关命令行工具

  1. 添加 k8s 的 aliyun 的 yum 源, 编译
vi /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
  1. 安装相关命令行工具
yum install -y kubeadm kubectl kubelet
  1. 将 kubelet 加入到服务
systemctl enable kubelet

设置系统

  1. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  1. 关闭交换分区
swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  1. 关闭 selinux
setenforce 0
# 编辑 /etc/selinux/config 加入一行
SELINUX=disabled
  1. 禁止 iptables 对 bridge 数据进行处理
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p /etc/sysctl.d/k8s.conf

安装 k8s-master

  1. 获取镜像
git clone https://github.com/hellojukay/k8s-sync.git
cd k8s-sync
groovy pull.groovy
  1. 启动 kubelet
systemctl start kubelet
  1. 启动安装
kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address=192.168.199.101
  1. 初始化成功
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  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 10.0.2.15:6443 --token 93rvon.wr2c96zgz0jbux4g \
    --discovery-token-ca-cert-hash <token>

如果这个 token 你忘记了,或者失效了, 可以通过 kubeadm token create 在创建一个新的. 按照提示, 退出 root 账户

使用前初始化

  1. 拷贝配置
[vagrant@node1 ~]$   mkdir -p $HOME/.kube
[vagrant@node1 ~]$   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[vagrant@node1 ~]$   sudo chown $(id -u):$(id -g) $HOME/.kube/config
[vagrant@node1 ~]$
  1. 添加一个网络 pod
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml
  1. 查看一下
[vagrant@node1 ~]$ kubectl get node
NAME    STATUS     ROLES    AGE     VERSION
node1   NotReady   master   6m24s   v1.14.1
[vagrant@node1 ~]$
  1. 生成 join 命令
kubeadm join 192.168.59.101:6443 --token x08flq.zkeyh91keapret3j     --discovery-token-ca-cert-hash <token>

一些坑

k8s.gcr.io/pause 和 quay.io/coreos/flannel 这两个镜像的服务都是 deamonSet , 所以在所有节点上都需要部署.

2020-12-14日添加

可以使用阿里云的公开仓库来加速 kubeadm 的下载镜像速度

 kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers