部署方式介绍

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个Kubernetes集群的部署:

  1. 创建一个Master节点 kubeadm init
  2. 将Node节点加入到当前集群中 kubeadm join <Master 节点的IP和端口>

环境初始化

关闭swap交换分区

防止Docker安装容器时安装到swap分区

临时关闭

swapoff -a

永久关闭

vim /etc/fstab
# 注释掉最后一行的swap

开启ip转发

vim /etc/sysctl.conf
# 开启net.ipv4.ip_forward 
net.ipv4.ip_forward=1

查看状态

sysctl -p

安装Docker

使用官方安装脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

修改Dockers驱动

避免和kubelet和docker的驱动程序不一致 导致kubelet启动失败

vim /etc/docker/daemon.json
# 添加配置
{
 "exec-opts":["native.cgroupdriver=systemd"]
}

重启Docker

systemctl restart docker

安装k8s

添加阿里云证书

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 

添加阿里云apt源

cat << EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  

更新源

apt update

查看可kubelet安装版本

apt-cache madison kubelet

安装kubelet

# 安装最新版本
apt install -y kubelet kubeadm kubectl
# 安装制定版本
apt install -y kubelet=1.18.4-00 kubeadm=1.18.4-00 kubectl=1.18.4-00

启动kubelet

systemctl start kubelet
# 设置开机自启
systemctl enable kubelet 
# 查看状态
systemctl status kubelet 

查看安装所需镜像

kubeadm config images list
# 指定版本号
kubeadm config images list --kubernetes-version=v1.18.4

从阿里云下载镜像

kubeadm 默认镜像源地址为Google源 科学上网请忽略

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7

为镜像重新打tag

科学上网请忽略

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4 k8s.gcr.io/kube-apiserver:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4 k8s.gcr.io/kube-controller-manager:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4 k8s.gcr.io/kube-scheduler:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4 k8s.gcr.io/kube-proxy:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7

初始化master节点

kubeadm init --kubernetes-version=v1.18.4 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
# kubernetes-version kubernetes版本号 跟安装的kubeadm保持一致
# pod-network-cidr pod网段 
# ignore-preflight-errors 忽略运行的错误
# 其他选项可以通过kubeadm init --help查看

重置master

kubeadm reset

添加网络组件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# gituhb 代理
kubectl apply -f https://cdn.jsdelivr.net/gh/coreos/flannel@master/Documentation/kube-flannel.yml

检查状态

kubectl get pods -n kube-system -l app=flannel
# 集群状态
kubectl get componentstatus
# 检查节点是否准备完成
kubectl get nodes

node 节点加入 master主机

重新生成token

//master主机上重新生成token
kubeadm token generate
#根据token输出添加命令
kubeadm token create xxxx(上面输出的token) --print-join-command --ttl=0