1.安装 docker (所有机器——是指 master 和 node 节点)
#更新
apt-get update
#安装最新版本 docker
apt install docker.io -y
#运行 docker 并设置开机自启
systemctl start docker
systemctl enable docker
2.设置 k8s 环境准备条件 (所有机器)
#关闭 swap 分区 ,在旧版 k8s 是需要关闭分区,但最新版已经支持 swap 这一步根据情况可省略
swapoff -a
#永久禁用 swap
vim /etc/fstab 注释掉 swap 一行
#修改内核参数
apt install -y bridge-utils
modprobe br_netfilter
lsmod | grep br_netfilter
3.安装与配置 k8s
1. 安装 kubelet kubeadm kubectl (master)
#安装基础环境
apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
#配置 K8S 阿里源
vim /etc/apt/sources.list.d/kubernetes.list
加入内容:
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
#安装 kubelet kubeadm kubectl
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
#阻止自动更新
apt-mark hold kubelet kubeadm kubectl
2. 部署 master
#创建 kubeadm-config.yaml 文件
添加内容:
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.80.131 #此配置是本机 IP 地址
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
imagePullPolicy: IfNotPresent
name: master
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.23.1
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
scheduler: {}
---
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
#cgroupDriver: systemd
cgroupDriver: cgroupfs
#测试是否能够 pull 镜像,如果不能,还需以下操作,如果可以,可以跳过以下操作
kubeadm config images pull (如果无法pull,那就需要跟着下面用docker去pull,然后改名为缺少的依赖)
#查看 kubeadm config的依赖有哪些
kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.23.17
k8s.gcr.io/kube-controller-manager:v1.23.17
k8s.gcr.io/kube-scheduler:v1.23.17
k8s.gcr.io/kube-proxy:v1.23.17
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6
#然后从国内拉取这些镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.23.17
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.17
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.23.17
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.17
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0
docker pull coredns/coredns:1.8.6
#然后根据 list出来的依赖对这些镜像重命名
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.23.17 k8s.gcr.io/kube-apiserver:v1.23.17
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.23.17 k8s.gcr.io/kube-controller-manager:v1.23.17
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.23.17 k8s.gcr.io/kube-scheduler:v1.23.17
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.17 k8s.gcr.io/kube-proxy:v1.23.17
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.1-0 k8s.gcr.io/etcd:3.5.1-0
docker tag coredns/coredns:1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6
3. 执行初始化操作
#初始化
kubeadm init --config kubeadm-config.yaml
显示初始化成功,运行这三条命令,下面则是 node 节点加入集群的命令,需要在 node 几点运行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4. 部署工作节点 (在 node 上执行)
#安装基础环境
apt-get install -y ca-certificates curl software-properties-common apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
#配置阿里源
vim /etc/apt/sources.list.d/kubernetes.list
加入内容:
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
#更新
apt-get update -y
# 安装kubeadm、kubectl、kubelet
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
# 阻止自动更新
apt-mark hold kubelet kubeadm kubectl
#加入集群
kubeadm join 192.168.80.131:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:781810b813a36593896ac337a964f1ae633dad1fd94db04cec82ef0968cd6d77
4.部署 Calico (master)
以上步骤安装完后,机器搭建起来了,但状态还是NotReady状态,如下图,master机器需要安装Calico
kubectl apply -f https://docs.projectcalico.org/v3.21/manifests/calico.yaml
等几分钟让 master把节点拉起来就ok了