#系统环境准备
参考
https://blog.csdn.net/dingzy1/article/details/147062698?spm=1001.2014.3001.5501
#配置下载源
sh
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/Release.key |
gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/deb/ /" |
tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-cache madison kubeadm
#下载kubelet kubeadm kubectl 的1.30.6-1.1版本组件
sh
apt-get -y install kubelet=1.30.6-1.1 kubeadm=1.30.6-1.1 kubectl=1.30.6-1.1
#查看版本信息
sh
[root@master221 ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"30", GitVersion:"v1.30.6", GitCommit:"00f20d443ba0cbc485d6ce36a7d3f9a9c4e8ed7a", GitTreeState:"clean", BuildDate:"2024-10-22T20:33:19Z", GoVersion:"go1.22.8", Compiler:"gc", Platform:"linux/amd64"}
[root@master221 ~]# kubectl version
Client Version: v1.30.6
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[root@master221 ~]# kubelet --version
Kubernetes v1.30.6
#使用kubeadm初始化master节点
sh
[root@master221 ~]# kubeadm init --kubernetes-version=v1.30.6 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.100.0.0/16 --service-cidr=10.200.0.0/16 --service-dns-domain=dezyan.com
#拷贝授权文件,用于管理K8S集群
sh
[root@master221 ~]# mkdir -p $HOME/.kube
[root@master221 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master221 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
#基于kubeadm部署worker组件
#将worker节点加入到master集群
sh
[root@worker222 ~]# kubeadm join 10.0.0.221:6443 --token kj6ydv.bu3dg4ghs1uy0y13 \
--discovery-token-ca-cert-hash sha256:d517cb572423511e891ab152da85fc2cd4b20727942926048b2f0b9127829232
[root@worker223 ~]# kubeadm join 10.0.0.221:6443 --token kj6ydv.bu3dg4ghs1uy0y13 \
--discovery-token-ca-cert-hash sha256:d517cb572423511e891ab152da85fc2cd4b20727942926048b2f0b9127829232
#验证worker节点是否加入成功
sh
[root@master221 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master221 NotReady control-plane 4m1s v1.30.6
worker222 NotReady <none> 8s v1.30.6
worker223 NotReady <none> 4s v1.30.6
#部署CNI插件之Canal实战
参考链接
https://docs.tigera.io/calico/3.28/getting-started/kubernetes/flannel/install-for-flannel
sh
[root@master221 ~]# curl https://raw.githubusercontent.com/projectcalico/calico/v3.28.3/manifests/canal.yaml -O
[root@master221 ~]# vim canal.yaml
改IP那行
[root@master221 ~]# kubectl apply -f canal.yaml
[root@master221 ~]# kubectl get pods -A
#等待镜像拉取,必须全部为Running状态
[root@master221 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master221 Ready control-plane 24m v1.30.6
worker222 Ready <none> 20m v1.30.6
worker223 Ready <none> 20m v1.30.6
#创建测试文件
sh
[root@master221 ~]# vim test-cni.yaml
apiVersion: v1
kind: Pod
metadata:
name: xiuxian-v1
spec:
nodeName: worker222
containers:
- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1
name: xiuxian
---
apiVersion: v1
kind: Pod
metadata:
name: xiuxian-v2
spec:
nodeName: worker223
containers:
- image: registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v2
name: xiuxian
#测试验证
sh
[root@master221 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
xiuxian-v1 1/1 Running 0 50s 10.100.1.2 worker222 <none> <none>
xiuxian-v2 1/1 Running 0 50s 10.100.2.2 worker223 <none> <none>
#curl一下
[root@master221 ~]# curl 10.100.1.2
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>yinzhengjie apps v1</title>
<style>
div img {
width: 900px;
height: 600px;
margin: 0;
}
</style>
</head>
<body>
<h1 style="color: green">凡人修仙传 v1 </h1>
<div>
<img src="1.jpg">
<div>
</body>
</html>
[root@master221 ~]# curl 10.100.2.2
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>yinzhengjie apps v2</title>
<style>
div img {
width: 900px;
height: 600px;
margin: 0;
}
</style>
</head>
<body>
<h1 style="color: red">凡人修仙传 v2 </h1>
<div>
<img src="2.jpg">
<div>
</body>
</html>