..
基于 vagrant 的 k8s 安装过程
使用 vagrant 创建三个虚拟机
- 安装我们即将用到的工具
yum install git vim java groovy net-tools -y
安装 docker-ce
- 我们使用阿里云的 docker-ce 源代来安装
# 安装最新版本
yum install docker-ce
我们安装 k8s 相关命令行工具
- 添加 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
- 安装相关命令行工具
yum install -y kubeadm kubectl kubelet
- 将 kubelet 加入到服务
systemctl enable kubelet
设置系统
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭交换分区
swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
- 关闭 selinux
setenforce 0
# 编辑 /etc/selinux/config 加入一行
SELINUX=disabled
- 禁止 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
- 获取镜像
git clone https://github.com/hellojukay/k8s-sync.git
cd k8s-sync
groovy pull.groovy
- 启动 kubelet
systemctl start kubelet
- 启动安装
kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address=192.168.199.101
- 初始化成功
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 账户
使用前初始化
- 拷贝配置
[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 ~]$
- 添加一个网络 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
- 查看一下
[vagrant@node1 ~]$ kubectl get node
NAME STATUS ROLES AGE VERSION
node1 NotReady master 6m24s v1.14.1
[vagrant@node1 ~]$
- 生成 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