[TOC]
修改kubelet配置(修改时如果没有该文件就创建该文件)
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
m@m:~$ sudo kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.18.20
k8s.gcr.io/kube-controller-manager:v1.18.20
k8s.gcr.io/kube-scheduler:v1.18.20
k8s.gcr.io/kube-proxy:v1.18.20
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7
touch kubeadm-config.yaml
sudo kubeadm config print init-defaults > kubeadm-config.yaml
参数详解:
- init-defaults: 显示init默认的初始化文件并打印到kubeadm-config.yaml文件中,这样就拿到了kubeadm默认的初始化模板
m@m:~$ grep 'imageRepository\|kubernetesVersion\|advertiseAddress' kubeadm-config.yaml
advertiseAddress: 1.2.3.4 (修改成成0.0.0.0)
imageRepository: k8s.gcr.io (这里修改成国内k8s镜像仓库)
kubernetesVersion: v1.18.0 (这里是自己当前安装k8s版本)
sed -e "s/1.2.3.4/0.0.0.0/g" -e "s/v1.18.0/v1.18.5/g" -e "s/k8s.gcr.io/registry.aliyuncs.com\/google_containers/g" kubeadm-config.yaml -i
m@m:~$ grep 'imageRepository\|kubernetesVersion\|advertiseAddress' kubeadm-config.yaml
advertiseAddress: 0.0.0.0
imageRepository: registry.aliyuncs.com/google_containers
kubernetesVersion: v1.18.5
m@m:~$ sudo kubeadm config images list --config kubeadm-config.yaml
registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.5advertiseAddress
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.5
registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.5
registry.aliyuncs.com/google_containers/kube-proxy:v1.18.5
registry.aliyuncs.com/google_containers/pause:3.2
registry.aliyuncs.com/google_containers/etcd:3.4.3-0
registry.aliyuncs.com/google_containers/coredns:1.6.7
sudo kubeadm config images pull --config kubeadm-config.yaml
sudo kubeadm init --config kubeadm-config.yaml
m@m:~$ sudo kubeadm init --config kubeadm-config.yaml
W0721 10:39:10.003330 7325 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.5
[preflight] Running pre-flight checks
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 20.10.7. Latest validated version: 19.03
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR Swap]: running with swap on is not supported. Please disable swap
[preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...`(检查到swap交换分区未未关闭 提示添加--ignore-preflight-errors=Swap 方可解决)
To see the stack trace of this error execute with --v=5 or higher
sudo kubeadm init --config kubeadm-config.yaml --ignore-preflight-errors=Swap
[kubelet-check] The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get http://localhost:10248/healthz: dial tcp [::1]:10248: connect: connection refused.
解决方法
sudo find / -name 10-kubeadm.conf
运行kubeadm init时加上阿里云镜像的参数--image-repository=registry.aliyuncs.com/google_containers,如下:(版本改为自己需要的)
sudo kubeadm init --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.18.5 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/16 --apiserver-advertise-address=166.66.66.66
m@m:~$ kubectl edit cm kube-proxy -n=kube-system
修改mode: ipvs
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml
kubectl apply -f calico.yaml
kubectl get cs
kubeadm join 10.0.0.9:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:b6d4666e4d407f611265541434bb796ff57c27cd706920ad58ba847b8a7fd109
sudo kubeadm token create --print-join-command
sudo kubeadm init --image-repository=k8s.gcr.io --kubernetes-version=v1.18.5 --apiserver-advertise-address=166.66.66.66 --ignore-preflight-errors=Swap --upload-certs