我缺的U盘:\soft这一块谁来给我补啊?
什么是 Kubernetes?
Kubernetes(简称 K8s )是一个开源的容器编排 平台,用于自动化部署、扩展和管理容器化应用。它支持自动扩展、负载均衡、服务发现等功能,让容器管理更高效。
Kubernetes 架构
- 控制平面 (Control Plane) :负责管理集群和工作节点,维护集群状态。
- 工作节点 (Work Plane) :执行控制平面分配的任务。
Kubernetes 结构(从大到小)
- Cluster 集群 :一个完整的 Kubernetes 区域。
- Node 节点 :一台或多台服务器,提供资源运行容器。
- Pod 节点集 :一个或多个容器运行的区域,共享资源 。
- Container 容器 :运行应用的最小单元。
Kubernetes 组件
控制平面组件 :
- kube-apiserver :提供 API 接口,是控制平面的前端。
- etcd :存储集群的所有配置数据。
- kube-scheduler :调度 Pod 到合适的节点。
- kube-controller-manager :运行控制器进程(如节点控制器、副本控制器)。
- cloud-controller-manager :与云服务提供商交互,管理云资源。
节点组件 :
- kubelet :确保容器在 Pod 中运行。
- kube-proxy :维护网络规则,实现服务和 Pod 的网络通信。
- 容器运行时 :如 Docker、containerd,负责运行容器。
控制平面初始化
这部分只要涉及外部访问的都得威法饭醉,自行解决
完成一次之后就可以离线配置了!
官方仓库 (本地源步骤)
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
EOF
curl https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > /etc/yum.repos.d/docker-ce.repo
下载到本地(本地源步骤)
yum install -y --downloadonly --downloaddir=/root kubeadm kubectl kubelet
yum install -y --downloadonly --downloaddir=/root containerd.io
[root@localhost ~]# zip kubernetes.zip *
adding: conntrack-tools-1.4.7-2.el9.x86_64.rpm (deflated 7%)
adding: containerd.io-1.7.24-3.1.el9.x86_64.rpm (deflated 0%)
adding: container-selinux-2.232.1-1.el9.noarch.rpm (deflated 24%)
adding: cri-tools-1.32.0-150500.1.1.x86_64.rpm (deflated 0%)
adding: kubeadm-1.32.0-150500.1.1.x86_64.rpm (deflated 0%)
adding: kubectl-1.32.0-150500.1.1.x86_64.rpm (deflated 0%)
adding: kubelet-1.32.0-150500.1.1.x86_64.rpm (deflated 0%)
adding: kubernetes-cni-1.6.0-150500.1.1.x86_64.rpm (deflated 0%)
adding: libnetfilter_cthelper-1.0.0-22.el9.x86_64.rpm (deflated 26%)
adding: libnetfilter_cttimeout-1.0.0-19.el9.x86_64.rpm (deflated 26%)
adding: libnetfilter_queue-1.0.5-1.el9.x86_64.rpm (deflated 22%)
安装
[root@localhost ~]# rpm -ivh *
-i
安装 (必须的)-v
详细信息-h
显示进度
前置操作
开机自启
systemctl enable --now kubelet.service containerd.service
关闭防火墙
systemctl disable --now firewalld.service
关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0
关闭swap分区
swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab
内核参数
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
containerd配置 /etc/containerd/config.toml
# 注释掉这一行
disabled_plugins = ["cri"]
# 重启
systemctl restart containerd.service
拉取依赖镜像(本地源步骤)
kubeadm config images pull
for image in $(crictl images -q); do
crictl save -o ${image//\//_}.tar $image
done
导入镜像
for tarfile in *.tar; do
ctr -n k8s.io images import $tarfile
done
初始化
kubeadm init
如果失败,重试要这样:
kubeadm reset
rm -rf /etc/kubernetes/
rm -rf /var/lib/etcd/
systemctl restart kubelet containerd
kubeadm init
完成
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.10.3:6443 --token 9oavet.qiku5ahhlb2c6nwj \
--discovery-token-ca-cert-hash sha256:d2d3c51f1923264f7158fce3ebf99f5fc22724e46819963e2a17f914ea318181
节点服务器加入集群
执行控制平面初始化最后一个输出的命令(以你自己的为准)
kubeadm join 192.168.10.3:6443 --token 9oavet.qiku5ahhlb2c6nwj \
--discovery-token-ca-cert-hash sha256:d2d3c51f1923264f7158fce3ebf99f5fc22724e46819963e2a17f914ea318181
没有评论