当前位置:网站首页>基于Kubernetes v1.24.0的集群搭建(三)
基于Kubernetes v1.24.0的集群搭建(三)
2022-07-24 12:33:00 【dotNET跨平台】
1 使用kubeadm部署Kubernetes
如无特殊说明,以下操作可以在所有节点上进行。
1.1 首先我们需要配置一下阿里源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
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
EOF1.2 开始安装
执行以下命令开始安装,可以默认安装也可以指定版本安装,目前的最新版本是1.24.1,默认即安装此版本。
yum install -y kubelet-1.24.1 kubeadm-1.24.1 kubectl-1.24.1 --disableexcludes=kubernetes
或
yum install kubelet kubeadm kubectl1.3 安装后查看版本
kubeadm version1.4 设置kubelet开机启动
systemctl enable --now kubelet1.5 初始化kubeadm配置信息
kubeadm config print init-defaults >kubeadm-init.yaml如上图所示,可以看出image仓库位置在k8s.gcr.io,为了防止拉取报错,可以配置成阿里云地址,定制出的config内容主要做了如下修改:
imageRepository为阿里云的registry
设置kubelet的cgroupDriver为systemd
设置kube-proxy代理模式为ipvs
apiVersion: kubeadm.k8s.io/v1beta3
mode: ipvs # kube-proxy 模式
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
cgroupDriver: systemd # 配置 cgroup driver
localAPIEndpoint:
advertiseAddress: 192.168.183.133 # ip地址
bindPort: 6443
nodeRegistration:
criSocket: unix:///var/run/containerd/containerd.sock
imagePullPolicy: IfNotPresent
name: nodea
taints: null
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers # 阿里源
kind: ClusterConfiguration
kubernetesVersion: 1.24.1
networking:
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/
1.6 拉取依赖镜像
在开始初始化集群之前,可以预先在各个服务器节点上拉取所k8s需要的如下容器镜像:
kube-apiserver:v1.24.0
kube-controller-manager:v1.24.0
kube-scheduler:v1.24.0
kube-proxy:v1.24.0
pause:3.7
etcd:3.5.3-0
coredns:v1.8.6
kubeadm config images pull --config kubeadm-init.yaml2 Master节点操作
2.1 集群初始化
kubeadm init --config kubeadm-init.yaml初始化过程中,可能会遇到“/proc/sys/net/bridge/bridge-nf-call-iptables does not exist”的错误,这是因为之前配置的br_netfilter没有启动,运行一下这个命令即可
modprobe br_netfilter如果一切正常,则会遇到如下提示,
以及最重要的token
2.2 配置常规用户使用kubectl访问集群
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config2.3 保存配置文件
kubectl -n kube-system get cm kubeadm-config -o yaml2.4 查看节点状态
kubectl get node3 Node节点操作
3.1 加入集群
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/在两个节点上同时执行如下命令:
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config3.2 安装网络插件
我们有两种选择,一个是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下载后需要修改里面的配置,首先设置一下网卡
其次需要设置一下网段,这里的网段和 1.5 步骤中的podSubnet的值保持一直,都是
10.88.0.0/16
执行命令
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.bak
systemctl daemon-reload
systemctl restart containerd kubelet3.3 集群验证
kubectl get cs
kubectl get nodes再执行一下如下命令,查看是否所有的pod都是运行正常的:
kubectl get pod --all-namespaces -o wide3.4 验证DNS解析
创建busybox.yaml
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- name: busybox
image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Alwayskubectl create -f busybox.yaml验证一下状态
kubectl get pods busybox
DNS检查
kubectl exec -i -t busybox -- nslookup kubernetes.default排错 根据这篇文章(https://dockone.io/article/10399)的排查,我也检查了一下我的CentOS内核版本,是3.10,比较老,需要升级一下。
经过一系列排错后,再次执行如下命令:
kubectl exec -i -t busybox -- nslookup kubernetes.default[[email protected] ~]# kubectl exec -ti busybox -- nslookup kubernetes
Server: 10.1.0.10
Address: 10.1.0.10#53
Name: kubernetes.default.svc.cluster.local
Address: 10.1.0.1目前的操作只是练手而已,想要搭建高可用的集群任重道远,需要投入更多精力。
参考链接
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
边栏推荐
- Time processing of basic library in go
- Force deduction exercise - 26 split array into continuous subsequences
- 有没有2、3w前期适合一个人干的创业项目呢?做自媒体可以吗?
- Wechat applet learning five page Jump methods
- [rust] what software should I use to develop rust? Recommended editors commonly used to support rust
- Overview of MES system equipment management (medium)
- Acwing 92. recursive implementation of exponential enumeration
- 3、 Implementation principle of MFC message mapping mechanism
- Is there a free and commercially available website for US media video clips?
- Buckle practice - 31 effective tic tac toe games
猜你喜欢

ThinkPHP realizes database backup

QT notes - qtablewidget table spanning tree, qtreewidget tree node generates table content

微信小程序生成二维码

Reserved instances & Savings Plans

How QT creator changes the default build directory

Do you regret learning it?

Basic SQL server operation problems - only when lists are used and identity_ Only when insert is on can the display value be set for the identification column in the table

Design of digital oscilloscope based on arm and FPGA -- QMJ

Implementing deep learning framework from zero -- further exploration of the implementation of multilayer bidirectional RNN

QT notes - EventFilter event filter
随机推荐
[mathematical basis of Cyberspace Security Chapter 3] congruence
Slow motion animation, window related data and operations, BOM operations [DOM (V)]
Installation and deployment of ansible
Do you regret learning it?
Understand what goals the MES system can achieve
What kind of experience is a monthly salary of 30000 yuan? Can we achieve this level as we media
QT based software framework design
Leetcode:51. queen n
ASP. Net core deployment Manual: 1. Deployment Basics
The biggest crisis for testers in the workplace is not at the age of 30, but being laid off in middle age
Learning materials about red team
[rust] Why do I suggest you learn rust | a preliminary study of rust
Use abp Zero builds a third-party login module (4): wechat applet development
Delphi gexperts expert instructions for improving development efficiency
Shell script case ---2
Convergence rules for 4 * 4 image weights
OpenCV:08图像金字塔
QT notes - realize form adaptation
Aruba learning notes 04 Web UI -- Introduction to configuration panel
[mathematical basis of Cyberspace Security Chapter 9] finite field

























