vi /etc/hostname2、安装docker
参考:Install Docker Engine on CentOS | Docker documentation
3、配置yum源cat <4、安装kubeadm和相关工具/etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes5、禁用selinux
setenforce 06、设置docker镜像
echo '{"registry-mirrors":["https://hub-mirror.c.163.com"],"exec-opts": ["native.cgroupdriver=systemd"]}' > /etc/docker/daemon.json
7、docker开机启动 & kbs开机启动
systemctl enable docker && systemctl start docker systemctl enable kubelet && systemctl start kubelet8、关闭linux的swap系统交换区
swapoff -a9、生成默认初始化参数文件
kubeadm config print init-defaults > init.default.yaml10、修改初始化参数文件内容(先复制一份)
cp init.default.yaml init-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration imageRepository: registry.aliyuncs.com/google_containers kubernetesVersion: 1.22.4 networking: podSubnet: 192.168.0.0/1611、拉取镜像
kubeadm config images pull --config=init-config.yaml12、对比镜像 13、使用docker tag 修改拉取的镜像(如果可以访问到k8s.gcr.io请忽略此步骤)
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.22.4 k8s.gcr.io/kube-apiserver:v1.22.4 docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.22.4 k8s.gcr.io/kube-controller-manager:v1.22.4 docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.22.4 k8s.gcr.io/kube-scheduler:v1.22.4 docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.22.4 k8s.gcr.io/kube-proxy:v1.22.4 docker tag registry.aliyuncs.com/google_containers/pause:3.5 k8s.gcr.io/pause:3.5 docker tag registry.aliyuncs.com/google_containers/etcd:3.5.0-0 k8s.gcr.io/etcd:3.5.0-0 docker tag registry.aliyuncs.com/google_containers/coredns:v1.8.4 k8s.gcr.io/coredns/coredns:v1.8.414、初始化master
kubeadm init --config=init-config.yaml --ignore-preflight-errors=all
如果发生错误可使用 如下命令查看日志,并根据具体问题解决
journalctl -f -u kubelet
成功提示:
非root用户mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/configroot用户
export KUBEConFIG=/etc/kubernetes/admin.conf
测试:
kubectl -n kube-system get configmap15、构建其他Node节点(和步骤1-8一致,但是第4步不需要安装kubectl),然后Node执行加入
kubeadm join 192.168.83.129:6443 --token 51e80a.o41mpmgj3db447ne
--discovery-token-ca-cert-hash sha256:6a233ea8c4376baa23b77224fec33781f09798213ee3ddaf3fbee95f421f6786
--ignore-preflight-errors=all
16、查看结果(在master执行 kubectl get nodes)
17、因为是NotReady状态,所以需要安装网络插件
kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"
安装完成后等一会:再次查看状态
注意!这里可能有calico-kube-controllers或者coredns未启动或者运行报错,可能是网段原因导致的,步骤10的podSubnet
如果您的网络运行在192.168.x.x 请使用10.0.0.0/16
如果您的网络是10.0.x.x 请使用192.168.0.0/16
18、失败处理 运行 kubeadm reset 后 ,重新 init 参考:Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版) 参考: 搭建Kubernetes集群踩坑日志之coreDNS 组件出现CrashLoopBackOff问题的解决_Iron_man的博客-CSDN博客


