0、准备离线安装包
a)准备Yum源
[kubernetes]
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
b)下载离线安装包
#利用yum install 包名 --downloadonly --downloaddir=/home下载所需要的离线安装包
#下载所需要的容器镜像,并且保存到本地
#!/bin/bash
images=(
kube-apiserver:v1.18.20
kube-controller-manager:v1.18.20
kube-scheduler:v1.18.20
kube-proxy:v1.18.20
pause:3.2
etcd:3.4.3-0
coredns:1.6.7
)
for imageName in ${images[@]};
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
docker save -o ${imageName}.tar k8s.gcr.io/${imageName}
done
1、关闭所有节点关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、所有节点关闭selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
3、所有节点关闭swap
swapoff -a # 临时关闭
cat /etc/fstab #注释到swap那一行 # 永久关闭
sed -i 's/.*swap.*/#&/g' /etc/fstab
4、安装kubeadm及其他包
yum install conntrack-tools
yum install -y kubelet-1.18.0
yum -y install kubeadm-1.18.0
yum -y install kubeadm-1.18.0
systemctl enable kubelet
#查看kubelet版本
kubelet --version
#查看kubeadm版本
kubeadm version
#重新加载配置文件
systemctl daemon-reload
#启动kubelet
systemctl start kubelet
#查看kubelet启动状态,没启动成功,报错先不管,后面的kubeadm init会拉起
systemctl status kubelet
#设置开机自启动
systemctl enable kubelet
#查看kubelet开机启动状态 enabled:开启, disabled:关闭
systemctl is-enabled kubelet
#查看日志
journalctl -xefu kubelet
5、利用kubeadm安装k8s
#查看所需要的容器
kubeadm config images list
#Kubeadm配置文件位置
/usr/lib/systemd/system/kubelet.service.d/kubeadm.conf
#修改cgourdriver为systemd
/usr/lib/systemd/system/docker.service
EnvironmentFile=-/usr/sbin/docker -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd
#制作镜像
docker tag k8s.gcr.io/kube-apiserver:v1.18.20 127.0.0.1:5000/kube-apiserver:v1.18.20
docker tag k8s.gcr.io/kube-controller-manager:v1.18.20 127.0.0.1:5000/kube-controller-manager:v1.18.20
docker tag k8s.gcr.io/kube-scheduler:v1.18.20 127.0.0.1:5000/kube-scheduler:v1.18.20
docker tag k8s.gcr.io/kube-proxy:v1.18.20 127.0.0.1:5000/kube-proxy:v1.18.20
docker tag k8s.gcr.io/pause:3.2 127.0.0.1:5000/pause:3.2
docker tag k8s.gcr.io/etcd:3.4.3-0 127.0.0.1:5000/etcd:3.4.3-0
docker tag k8s.gcr.io/coredns:1.6.7 127.0.0.1:5000/coredns:1.6.7
docker tag k8s.gcr.io/coredns:1.6.7 127.0.0.1:5000/coredns:1.6.7
docker push 127.0.0.1:5000/kube-apiserver:v1.18.20
docker push 127.0.0.1:5000/kube-controller-manager:v1.18.20
docker push 127.0.0.1:5000/kube-scheduler:v1.18.20
docker push 127.0.0.1:5000/kube-proxy:v1.18.20
docker push 127.0.0.1:5000/pause:3.2
docker push 127.0.0.1:5000/etcd:3.4.3-0
docker push 127.0.0.1:5000/coredns:1.6.7
docker push 127.0.0.1:5000/coredns:1.6.7
#执行安装
kubeadm init \
--apiserver-advertise-address=192.168.8.9 \
--image-repository=127.0.0.1:5000 \
--kubernetes-version v1.18.20 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
#安装完成后,给出如下提示:
=================================================================================
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.8.9:6443 --token 94ifz1.crdyr3hs5lzbowtw \
--discovery-token-ca-cert-hash sha256:b7618a56eab737d2af87f29b752839617d320bcb694bcda957d3fe743f9ef722
====================================================================================
#按照提示,执行命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#如果只部署一个节点,设置节点的驱逐策略
kubectl taint nodes --all node-role.kubernetes.io/master-
#安装flannel
kubectl create -f kube-flannel.yml
#如果只有一个节点,不需要执行节点加入命令
///错误问题,及解决
1、错误1
kubelet-check] It seems like the kubelet isn't running or healthy.
方法:
rm -rf /etc/kubernetes/manifests
kubeadm reset
2、错误2
[root@localhost K3S示例程序]# kubectl get nodes
error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
方法:
export KUBECONFIG=/etc/kubernetes/admin.conf