如无特殊说明,以下操作可以在所有节点上进行。
cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
执行以下命令开始安装,可以默认安装也可以指定版本安装,目前的最新版本是1.24.1,默认即安装此版本。
yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 --disableexcludes=kubernetes或yum install kubelet kubeadm kubectl
kubeadm version
systemctl enable --now kubelet
kubeadm config print init-defaults >kubeadm-init.yaml
如上图所示,可以看出image仓库位置在k8s.gcr.io,为了防止拉取报错,可以配置成阿里云地址,定制出的config内容主要做了如下修改:
apiVersion: kubeadm.k8s.io/v1beta3mode: ipvs # kube-proxy 模式bootstrapTokens:- groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authenticationkind: InitConfigurationcgroupDriver: systemd # 配置 cgroup driverlocalAPIEndpoint: advertiseAddress: 192.168.183.133 # ip地址 bindPort: 6443nodeRegistration: criSocket: unix:///var/run/containerd/containerd.sock imagePullPolicy: IfNotPresent name: nodea taints: null---apiServer: timeoutForControlPlane: 4m0sapiVersion: kubeadm.k8s.io/v1beta3certificatesDir: /etc/kubernetes/pkiclusterName: kubernetescontrollerManager: {}dns: {}etcd: local: dataDir: /var/lib/etcdimageRepository: registry.aliyuncs.com/google_containers # 阿里源kind: ClusterConfigurationkubernetesVersion: 1.24.1networking: dnsDomain: cluster.local serviceSubnet: 10.1.0.0/12 podSubnet: 10.88.0.0/16 # ip网段scheduler: {}
详细的配置说明可以参考该文档:https://kubernetes.io/docs/reference/config-api/kubeadm-config.v1beta3/
在开始初始化集群之前,可以预先在各个服务器节点上拉取所k8s需要的如下容器镜像:
kubeadm config images pull --config kubeadm-init.yaml
kubeadm init --config kubeadm-init.yaml初始化过程中,可能会遇到“/proc/sys/net/bridge/bridge-nf-call-iptables does not exist”的错误,这是因为之前配置的br_netfilter没有启动,运行一下这个命令即可
modprobe br_netfilter如果一切正常,则会遇到如下提示,
以及最重要的token

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl -n kube-system get cm kubeadm-config -o yaml
kubectl get node
kubeadm join 192.168.183.133:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:9ec147b59acdd7ac4f6d3b7b5bf378cf46535aa77117878d49e926a638eaf307 出现如下信息,则说明Node节点已经成功加入到集群

执行如下命令,发现网络报错
kubectl get nodes
出现如上错误,我是把master节点上的admin.conf同步到两个node节点里,不知道大家是如何解决这个问题的。
在master节点做如下操作
scp /etc/kubernetes/admin.conf node02:/etc/kubernetes/scp /etc/kubernetes/admin.conf node02:/etc/kubernetes/```bash 在两个节点上同时执行如下命令:```bashmkdir -p $HOME/.kubecp /etc/kubernetes/admin.conf ~/.kube/config
我们有两种选择,一个是Flannel,另一个是Calico
由CoreOS开发的项目Flannel,可能是最直接和最受欢迎的CNI插件。它是容器编排系统中最成熟的网络结构示例之一,旨在实现更好的容器间和主机间网络。许多常见的Kubernetes集群部署工具和许多Kubernetes发行版都可以默认安装Flannel。
Calico是Kubernetes生态系统中另一种流行的网络选择。虽然Flannel被公认为是最简单的选择,但Calico以其性能、灵活性而闻名。Calico的功能更为全面,不仅提供主机和pod之间的网络连接,还涉及网络安全和管理。Calico CNI插件在CNI框架内封装了Calico的功能。
此处我们使用Flannel插件。
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml下载后需要修改里面的配置,首先设置一下网卡

执行命令
kubectl apply -f kube-flannel.yml
做出了如上操作之后还不行,还是会报错,主要是CNI版本兼容性问题,如图

这里可以把containerd中的CNI去除掉
mv /etc/cni/net.d/10-containerd-net.conflist /etc/cni/net.d/10-containerd-net.conflist.baksystemctl daemon-reloadsystemctl restart containerd kubelet

kubectl get cskubectl get nodes
再执行一下如下命令,查看是否所有的pod都是运行正常的:
kubectl get pod --all-namespaces -o wide
apiVersion: v1kind: Podmetadata: name: busybox namespace: defaultspec: containers: - name: busybox image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent restartPolicy: Alwayskubectl create -f busybox.yaml
kubectl get pods busybox
kubectl exec -i -t busybox -- nslookup kubernetes.default

经过一系列排错后,再次执行如下命令:
kubectl exec -i -t busybox -- nslookup kubernetes.default
目前的操作只是练手而已,想要搭建高可用的集群任重道远,需要投入更多精力。
http://www.manongjc.com/detail/25-lioggelnywerjyf.html
https://www.kubernetes.org.cn/1904.html
https://www.toutiao.com/article/7105957860210819623/
https://i4t.com/5451.html
https://blog.frognew.com/2022/05/kubeadm-install-kubernetes-1.24.html
以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
作者:艾心
出处:https://www.cnblogs.com/edison0621/
本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。