安装k8s的4种途径:

  1. 使用kubeadmin通过镜像安装(kubelet,kubectl,kubeadm三件套)
  2. 使用阿里公有云平台k8s,钞能力
  3. 通过yum官方仓库安装,上古版本
  4. 二进制包的形式进行安装,kubeasz (github)

一、安装前准备

  • 1.1 设置主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1 
hostnamectl set-hostname node2
vi /etc/hosts
添加主机名
172.17.214.104 node4
172.17.214.105 master
172.17.214.106 node6
172.17.214.107 node7
172.17.214.108 node8
  • 1.2 设置时区
#设置时区
timedatectl set-timezone Asia/Shanghai 
#使用阿里云同步时间
ntpdate ntp1.aliyun.com 
#ntpdate time.windows.com
  • 1.3 关闭防火墙
修改防火墙
systemctl stop firewalld 
systemctl disable firewalld
systemctl status firewalld
  • 1.4 关闭 swap 分区
关闭 swap
swapoff -a && sudo sed -i 's/^.*swap/#&/g' /etc/fstab
或者 vi /etc/fstab,注释掉下面一行
/dev/mapper/xxxx swap ...

可通过 free -m查看swap的状态
  • 1.5 关闭 selinux
getenforce #查看
#临时关闭
setenforce 0 
#永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
或者
vi /etc/sysconfig/selinux
SELINUX=disabled  # 修改以下参数,设置为disable
  • 1.6 修改docker用户组
sudo usermod -aG docker $USER #当前用户加入"docker"用户组
配置 cgroup 驱动为 systemd
vim /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
或者
{
  "bip": "192.168.10.1/16",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ]
}
* 为了让用户可以配置后,更方便的检查配置是否生效,建议使用修改 docker.service 的办法,去配置 dockerd --registry-mirror=,而不推荐使用 daemon.json。这样检查配置可以很容易的 
ps -ef | grep dockerd 来查看具体生效配置

重启服务生效配置
sudo systemctl daemon-reload
sudo systemctl restart docker
检查配置是否生效
sudo docker info | grep Cgroup
  • 1.7 安装k8s命令自动补全
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

二、安装k8s

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl kubernetes-cni
安装指定版本
#可以查看都可以安装什么版本
sudo apt-cache madison kubeadm 
sudo apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00


设置kubelet开机启动
sudo systemctl enable kubelet && sudo systemctl start kubelet
  • 2.2 CentOS 安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
  • 2.3 错误处理:由于官网未开放同步方式, 可能会有索引gpg检查失败的情况
# 这时请用以下命令安装
yum install -y --nogpgcheck kubelet kubeadm kubectl
  • 2.4 查看信息
kubeadm version
kubelet --version
kubectl version
kubeadm config images list  #查看所需的镜像及版本

三、配置部署

四、安装node节点

五、错误处理

  • 安装错误-不能拉镜像unknown service runtime.v1alpha2.RuntimeService
rm /etc/containerd/config.toml
systemctl restart containerd
  • 安装错误[kubelet-check] Initial timeout of 40s passed.卡住
#按提示查看报错 
systemctl status kubelet
journalctl -xeu kubelet
vim /var/log/messages
发现是
error="failed to get sandbox image \"k8s.gcr.io/pause:3.5\" #拉长可看到错误
#解决 先下载镜像,然后打 tag, 然后reset,重新
ctr -n k8s.io i pull k8s.gcr.io/pause:3.5 #测试
ctr -n k8s.io i ls -q #查看镜像

crictl pull registry.aliyuncs.com/google_containers/pause:3.5 #下载
ctr -n k8s.io i tag registry.aliyuncs.com/google_containers/pause:3.5  k8s.gcr.io/pause:3.5 #重命名

kubeadm reset
kubeadm init --config init.yml #重新安装
  • [ERROR SystemVerification]: missing required cgroups: cpu
/etc/default/grub #添加一行
GRUB_CMDLINE_LINUX="cgroup_enable=cpu"
运行 update-grub2
* 或者
/boot/cmdline.txt #加入下面两句:
cgroup_enable=cpu cgroup_cpu=1
然后 reboot 重启一下即可
  • The connection to the server 172.30.123.182:6443 was refused - did you specify the right host or port?
确认是否重启是否成功
kubectl get nodes
kubectl get pod --all-namespaces
kubectl get pods

kubectl cluster-info #查看是否运行