安装k8s的4种途径:
- 使用kubeadmin通过镜像安装(kubelet,kubectl,kubeadm三件套)
- 使用阿里公有云平台k8s,钞能力
- 通过yum官方仓库安装,上古版本
- 二进制包的形式进行安装,kubeasz (github)
一、安装前准备
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
#设置时区
timedatectl set-timezone Asia/Shanghai
#使用阿里云同步时间
ntpdate ntp1.aliyun.com
#ntpdate time.windows.com
修改防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
关闭 swap
swapoff -a && sudo sed -i 's/^.*swap/#&/g' /etc/fstab
或者 vi /etc/fstab,注释掉下面一行
/dev/mapper/xxxx swap ...
可通过 free -m查看swap的状态
getenforce #查看
#临时关闭
setenforce 0
#永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
或者
vi /etc/sysconfig/selinux
SELINUX=disabled # 修改以下参数,设置为disable
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
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
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
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 #查看是否运行