K8S-集群安装(2.24前后版本的安装方式都有)精
# K8S安装 ☸️
本文介绍了安装k8s集群的一种方式,使用kubeadm快速构建一套可用的标准的k8s集群 😍。安装的过程中,不同时期的版本是有些许差异的😱,比较明显的差异就是在2.24之后,docker不能直接使用,需要通过cri来进行适配。
# 环境准备
3️⃣台linux服务器
网络🛜可用
修改每个服务器的hosts文件📃
vim /etc/hosts
1
192.168.0.75 master01
192.168.0.76 node01
192.168.0.77 node02
1
2
3
2
3
- 🔞关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
1
2
3
2
3
- ❌关闭swap,注释swap分区
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
1
2
3
4
5
6
7
2
3
4
5
6
7
- 配置内核参数,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
1
2
3
4
2
3
4
sysctl --system
1
# 安装常用包工具🛠️
yum install vim bash-completion net-tools gcc -y
1
# 安装docker🐳
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce
1
2
3
4
5
2
3
4
5
tips 📣
我之前在安装docker的时候总是会有runc的问题 🌚,如果在安装过程中遇到了就给runc重装一下👻
yum remove runc -y
yum install runc -y
yum -y install docker-ce
1
2
3
4
5
2
3
4
5
# 🛫添加aliyundocker仓库加速器🚀
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://reg-mirror.qiniu.com/"]
}
EOF
1
2
3
4
5
6
7
2
3
4
5
6
7
# 启动docker 🕹️
systemctl daemon-reload
systemctl enable docker
systemctl restart docker
1
2
3
4
5
2
3
4
5
# 安装k8s ☸️
- 安装kubectl、kubelet、kubeadm
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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum update
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 🍄
👉 到目前为止,以上步骤各个版本都是适用的💄,接下来将以1.18和1.28两个版本为例分别展开记录安装步骤💦
# 1.18版本
安装1.18.0,这个版本是相对稳定的版本,同时下载的时候没有网络的限制,更新的版本下载时可能会遇到国内源不足的问题,国外的因为网络问题,下载不下来
tips 📣
安装1.18.0,这个版本是相对稳定的版本,同时下载的时候没有网络的限制,更新的版本下载时可能会遇到国内源不足的问题,国外的因为网络问题,下载不下来。
可以使用以下命令列举出当前可以安装的k8s软件版本
yum list kubelet kubeadm kubectl --showduplicates|sort -r
1
- 安装
yum install kubelet-1.18.0-0 kubeadm-1.18.0-0 kubectl-1.18.0-0 -y
## 跳过公钥检查
yum install kubelet-1.18.0-0 kubeadm-1.18.0-0 kubectl-1.18.0-0 -y --nogpgcheck
systemctl enable kubelet
1
2
3
4
5
6
2
3
4
5
6
以上步骤各个节点都要执行
- master上初始化k8s集群
kubeadm init \
--kubernetes-version=1.18.0 \
--apiserver-advertise-address=192.168.60.75 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
1
2
3
4
5
6
2
3
4
5
6
--apiserver-advertise-address 本机的ip,其它部分不用动, 记住这一步执行完成后的返回信息,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
source <(kubectl completion bash)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 可以使用了
kubectl get node
kubectl get pod --all-namespaces
1
2
3
2
3
# 1.28版本
新版的要使用cri-docker才能用docker
- 安装cri-dockerd
rpm -ivh libcgroup-0.41-19.el8.x86_64.rpm
rpm -ihv cri-dockerd-0.3.4-3.el7.x86_64.rpm
systemctl daemon-reload
systemctl enable cri-docker.socket cri-docker
systemctl start cri-docker.service
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 初始化节点
kubeadm init \
--apiserver-advertise-address=192.168.0.151 \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
1
2
3
4
2
3
4
- node加入节点
kubeadm join 192.168.0.151:6443 --token kphcf8.8bkwpcg7svwb2cql \
--discovery-token-ca-cert-hash sha256:2135122a581ab62441bbe534f151918be467d5895614808379240c96f52dba88 \
--cri-socket=unix:///var/run/cri-dockerd.sock
1
2
3
2
3
- master也干活
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
1
重置集群
执行这个命令可以重置集群
kubeadm reset -f --cri-socket=unix:///var/run/cri-dockerd.sock
1
总得来说,1.28相比1.18只是差在cri的区别上,我们在处理集群的时候需要加上--cri-socket=unix:///var/run/cri-dockerd.sock
参数
至此master安装完毕
# 安装网络
2选1
- flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
1
- calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
1
- 如果是单节点的话,使master可以部署pod
kubectl taint nodes master01 node-role.kubernetes.io/master-
1
- node节点加入集群
kubeadm join 192.168.0.75:6443 --token dq7wsg.leird6167ziiw3mf --discovery-token-ca-cert-hash sha256:63d9ae3a2725024b4dc812c1a2313f5a9a278b2d5afd257f9eff82314c7111ca --v=5
1
# 结束
如果有不正确的地方可以在评论进行交流🍺🍺🍺🍺🍺🍺🍺
一些可能会用到的操作
重置时可能出现问题
kubeadm reset -f
# 如何失败,提示:[reset] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
# centos 7 可能会有这样的问题,如果是master机器的话,需要先执行以下指令:
rm -rf /etc/kubernetes/*
rm -rf /root/.kube/
rm -rf /var/lib/etcd
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
kubeadm reset -f --cri-socket=unix:///var/run/cri-dockerd.sock
1
// Make sure to add code blocks to your code group
清空iptables规则
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
1
master执行,重新加入的指令
kubeadm token create --print-join-command
1
docker 代理
vim /etc/docker/daemon.json
1
{
"proxies": {
"http-proxy": "http://192.168.0.107:7890",
"https-proxy": "http://192.168.0.107:7890",
"no-proxy": "192.168.0.*"
},
"registry-mirrors": ["https://reg-mirror.qiniu.com/"]
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
上次更新: 2024/08/08, 06:59:58