背景
已经2024年了, k8s已经更新到 1.30.x的版本了,但是还有很多公司还在使用1.17.9版本,那么我们今天就来手动安装一下1.17.9版本的k8s。
安装
我们在测试centos
服务器192.168.40.1
安装单节点 Kubernetes 集群(Master 节点)使用 kubeadm 是一个相对直接的过程。
前提条件
- 确保主机满足以下要求:
- 操作系统:CentOS 7.x 或更高版本
- 内存:至少 2 GB 内存
- 磁盘空间:至少 20 GB 磁盘空间
- 网络:至少 2 个网络接口
配置主机名和 IP
1sudo hostnamectl set-hostname k8s
2echo "192.168.40.1 k8s" | sudo tee -a /etc/hosts
更新系统
- 切换镜像源
1bash <(curl -sSL https://www.jobcher.com/ChangeMirrors.sh)
- 更新系统
1sudo yum update -y
禁用 SELinux
1sudo setenforce 0
2sudo sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
禁用 Swap
1sudo swapoff -a
2sudo sed -i '/swap/d' /etc/fstab
修改 /etc/sysctl.conf
1# 如果有配置,则修改
2sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g" /etc/sysctl.conf
3sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g" /etc/sysctl.conf
4sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g" /etc/sysctl.conf
5sed -i "s#^net.ipv6.conf.all.disable_ipv6.*#net.ipv6.conf.all.disable_ipv6=1#g" /etc/sysctl.conf
6sed -i "s#^net.ipv6.conf.default.disable_ipv6.*#net.ipv6.conf.default.disable_ipv6=1#g" /etc/sysctl.conf
7sed -i "s#^net.ipv6.conf.lo.disable_ipv6.*#net.ipv6.conf.lo.disable_ipv6=1#g" /etc/sysctl.conf
8sed -i "s#^net.ipv6.conf.all.forwarding.*#net.ipv6.conf.all.forwarding=1#g" /etc/sysctl.conf
9# 可能没有,追加
10echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
11echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
12echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
13echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
14echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
15echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
16echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
17# 执行命令以应用
18sysctl -p
安装docker
因为k8s 1.17.9 不适用于高版本docker,所以我们要下载指定版本的docker
1sudo yum remove docker*
2sudo yum install -y yum-utils
3#配置docker yum 源
4sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5#安装docker 19.03.9
6yum install -y docker-ce-3:19.03.9-3.el7.x86_64 docker-ce-cli-3:19.03.9-3.el7.x86_64 containerd.io
7
8#启动服务
9systemctl start docker
10systemctl enable docker
11
12sudo systemctl daemon-reload
13sudo systemctl restart docker
拉取镜像
由于国内访问 k8s.gcr.io 仓库速度较慢或被阻止,您可以使用国内的镜像源来替代这些镜像地址。以下是一个解决方案,使用阿里云的镜像源来替代默认的 k8s.gcr.io 镜像源。
1# 拉取阿里云的镜像
2sudo docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.9
3sudo docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.9
4sudo docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.9
5sudo docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.17.9
6sudo docker pull registry.aliyuncs.com/google_containers/pause:3.1
7sudo docker pull registry.aliyuncs.com/google_containers/etcd:3.4.3-0
8sudo docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
9
10# 重新标记镜像
11sudo docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.9 k8s.gcr.io/kube-apiserver:v1.17.9
12sudo docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.9 k8s.gcr.io/kube-controller-manager:v1.17.9
13sudo docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.9 k8s.gcr.io/kube-scheduler:v1.17.9
14sudo docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.17.9 k8s.gcr.io/kube-proxy:v1.17.9
15sudo docker tag registry.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
16sudo docker tag registry.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
17sudo docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
安装 kubeadm、kubelet 和 kubectl
- 配置阿里云的 Kubernetes 仓库:
1cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
2[kubernetes]
3name=Kubernetes
4baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
5enabled=1
6gpgcheck=1
7repo_gpgcheck=1
8gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
9EOF
- 安装特定版本的 kubeadm、kubelet 和 kubectl:
1sudo yum install -y kubelet-1.17.9 kubeadm-1.17.9 kubectl-1.17.9 --disableexcludes=kubernetes
2sudo systemctl enable --now kubelet
初始化集群
- 初始化集群:
1sudo kubeadm init --kubernetes-version=v1.17.9 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.40.1
- 配置 kubectl:
1mkdir -p $HOME/.kube
2sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
3sudo chown $(id -u):$(id -g) $HOME/.kube/config
安装 Pod 网络插件(Flannel)
这里由于版本关系,不能下载最新的flannel,所以我们下载低版本的flannel
1# 拉取 Flannel 镜像
2sudo docker pull quay.io/coreos/flannel:v0.12.0-amd64
3
4# 重新标记 Flannel 镜像
5sudo docker tag quay.io/coreos/flannel:v0.12.0-amd64 quay.io/coreos/flannel:v0.12.0-amd64
创建 Flannel 配置文件
1wget https://raw.githubusercontent.com/coreos/flannel/v0.12.0/Documentation/kube-flannel.yml
2kubectl apply -f kube-flannel.yml
验证安装
查看节点状态:
1kubectl get nodes
查看所有 Pod 状态:
1kubectl get pods -A