环境准备
笔者是在阿里云租了三台ecs服务器,系统选用的ubuntu16.04(2核4G,建议CPU核数不少于2, 配置过低preflight checks阶段可能会报错). 使用几个虚拟机也可,有条件的可使用本地的几台物理机.
部署master节点
master节点上需要安装 docker cubeadm cubectl cubelet
1.首先进行换源(不然下载很慢),更换阿里云的源.
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#将deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main 加入到/etc/apt/sources.list.d/kubernetes.list文件中,文件不存在就创建
echo deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main > /etc/apt/sources.list.d/kubernetes.list
2.安装kubelet kubeadm kubectl 以及docker(笔者安装时kubelet kubeadm kubectl版本为1.23.0)
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-get install -y docker.io
3.准备一个master节点要使用的yaml文件 vim kubeadm.yaml
内容如下
apiVersion: kubeadm.k8s.io/v1beta3 #版本信息参考kubeadm config print init-defaults命令结果
kind: ClusterConfiguration
kubernetesVersion: 1.23.0 #根据自己安装的k8s版本来写,版本信息参考kubeadm config print init-defaults命令结果
imageRepository: registry.aliyuncs.com/google_containers #配置国内镜像
apiServer:
extraArgs:
runtime-config: "api/all=true"
#controllerManager:
# extraArgs:
# horizontal-pod-autoscaler-use-rest-clients: "true" #开启kube-controller-manager能够使用自定义资源(Custom Metrics)进行自动水平扩展,但是高版本不支持该参数需要去掉。
# horizontal-pod-autoscaler-sync-period: "10s"
# node-monitor-grace-period: "10s"
etcd:
local:
dataDir: /data/k8s/etcd
4.利用写好的kubeadm.yaml部署master节点
kubeadm init --config kubeadm.yaml
这一步有如下报错信息
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.
[kubelet-check] It seems like the kubelet isn't running or healthy.
[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.
[kubelet-check] It seems like the kubelet isn't running or healthy.
[kubelet-check] The HTTP call equal to