目录:
准备基础环境
- 操作系统:Ubuntu 20.04
- 容器运行时的引擎: Docker 19.03ce
- Kubernetes:v1.19
-
主机时间同步
sudo systemctl start chronyd sudo systemctl enable chronyd # 查看服务状态 sudo systemctl status chronyd
-
防火墙
sudo ufw disable && sudo ufw status
-
禁用Swap
# 临时禁用 sudo swapoff -a # 永久禁用,将/swapfile 开头的一行进行注释 sudo vi /etc/fstab
配置容器运行引擎
- 更新apt索引,并安装必要的包
sudo apt apt update sudo apt install apt-transport-https ca-certificates \ curl gnupg-agent software-properties-common
- 添加官方Gpg证书,用来验证包
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 为apt添加稳定版本的docker-ce仓库
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable"
- 更新索引后安装docker-ce
sudo apt update # 查看可用的docker-ce版本 sudo apt-cache madison docker-ce # 安装指定版本 sudo apt install docker-ce=5:19.03.15~3-0~ubuntu-focal sudo apt install docker-ce-cli=5:19.03.15~3-0~ubuntu-focal sudo apt install containerd.io
- 配置Docker。编辑配置文件/etc/docker/daemon.json ,加入以下配置。(使用systemd而不是cgroupfs)
{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" }
- 启动Docker服务,并设置服务可随系统引导启动。
sudo systemctl daemon-reload sudo systemctl start docker sudo systemctl enable docker
安装kubectl、kubelet和kubeadm
注意要确保组件的版本一致
- 更新apt索引
sudo apt update
- 添加官方密钥
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
- 在配置文件/etc/apt/sources.list.d/kubernetes.list 中添加一下内容, 为apt添加kubernetes程序包仓库。
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
- 更新apt索引安装程序包
sudo apt update sudo apt install -y kubelet=1.19.0-00 kubeadm=1.19.0-00 kubectl=1.19.0-00
- Master网卡信息
因为方便测试使用的是ubuntu20.04的桌面版
- 配置静态解析 /etc/resolve.conf, 这里的域名可以根据情况修改
# 编辑/etc/hosts 10.0.2.14 k8s-master-01.ilinux.io k8s-master01 k8s-api.ilinux.io 10.0.2.15 k8s-node01.ilinux.io k8s-node01 10.0.2.16 k8s-node02.ilinux.io k8s-node02 10.0.2.17 k8s-node03.ilinux.io k8s-node03
此时可以准备3台node节点, 注意clone时,网卡的mac地址要不同。
单控制平面集群
-
初始化
sudo kubeadm init \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.19.0 \ --control-plane-endpoint k8s-api.ilinux.io \ --apiserver-advertise-address 10.0.2.14 \ --pod-network-cidr 10.244.0.0/16 \ --token-ttl 0
初始化完成时,会给出master 的token, 请copy下来,以便node加入集群
-
配置kubectl
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 接下来可以通过kubectl get nodes 来查看nodes 状态。
-
部署Flannel插件
当flannel的pod 状态为running时,此时node节点的状态会转为ready。
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
将node加入k8s集群, 将之前copy的token在node上执行
kubeadm join k8s-api.ilinux.io:6443 --token 0by003.s88ybg64jrg9txcs \ --discovery-token-ca-cert-hash sha256:7edd96f1e1a0a88cb99285831c8aad36c20c65f307b4c1c5c790a1ab447e9f0e
-
此时完成的集群状态