From c031b441e02599dd9a8c705c42a132ea84c5d112 Mon Sep 17 00:00:00 2001 From: wxin <15253413025@163.com> Date: Tue, 22 Apr 2025 20:23:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20kubernetes-=E9=9B=86?= =?UTF-8?q?=E7=BE=A4.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kubernetes-集群.md | 522 ++++++++++++++++++++++----------------------- 1 file changed, 261 insertions(+), 261 deletions(-) diff --git a/kubernetes-集群.md b/kubernetes-集群.md index beba09e..b2f126a 100644 --- a/kubernetes-集群.md +++ b/kubernetes-集群.md @@ -1,261 +1,261 @@ -

Kubernetes 集群

- ------- - -## 一:部署kubernetes 集群 - -### 1. 前置知识点 - -目前生产部署`Kubernetes`集群主要有两种方式: - -- `kubeadm` - - `Kubeadm`是一个`K8s`部署工具,提供`kubeadm init`和`kubeadm join`,用于快速部署`Kubernetes`集群。 - - 官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ - -- 二进制包 - - 从`github`下载发行版的二进制包,手动部署每个组件,组成`Kubernetes`集群。 - - `Kubeadm`降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署`Kubernetes`集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。 - -![](accents\images-202504120001.png) - -### 2. kubeadm 部署方式介绍 - -`kubeadm`是官方社区推出的一个用于快速部署`kubernetes`集群的工具,这个工具能通过两条指令完成一个`kubernetes`集群的部署: - -- 创建一个`Master`节点`kubeadm init` -- 将`Node`节点加入到当前集群中`$ kubeadm join ` - -### 3. 安装要求 - -在开始之前,部署`Kubernetes`集群机器需要满足以下几个条件: - -- 一台或多台机器,操作系统`CentOS7.x-86_x64` -- 硬件配置:`2GB`或更多`RAM`,2 个`CPU`或更多`CPU`,硬盘30GB 或更多 -- 集群中所有机器之间网络互通 -- 可以访问外网,需要拉取镜像 -- 禁止`swap`分区 - -### 4. 最终目标 - -- 在所有节点上安装`Docker`和`kubeadm` -- 部署`Kubernetes Master` -- 部署容器网络插件 -- 部署`Kubernetes Node`,将节点加入`Kubernetes`集群中 -- 部署`Dashboard Web`页面,可视化查看`Kubernetes`资源 - -### 5. 准备环境 - -![](accents\images-202504120002.png) - -| 节点 | IP地址 | 组件 | -| :----: | :-------------: | :-------------------------------: | -| master | 192.168.159.130 | docker,kubectl,kubeadm,kubelet | -| node1 | 192.168.159.131 | docker,kubectl,kubeadm,kubelet | -| node2 | 192.168.159.132 | docker,kubectl,kubeadm,kubelet | - -### 6. 环境初始化 - -**主机名解析** - -```bash -[root@master ~]# vim /etc/hosts -192.168.159.130 master -192.168.159.131 node1 -192.168.159.132 node2 - -注意: - 所有节点 -``` - -**禁用`iptable`和`firewalld`** - -```bash -[root@master ~]# systemctl stop firewalld -[root@master ~]# systemctl disable firewalld - -[root@master ~]# systemctl stop iptables -[root@master ~]# systemctl disable iptables - -注意: - 所有节点 -``` - -**禁止`selinux`** - -```bash -[root@master ~]# setenforce 0 -[root@master ~]# vim /etc/selinux/config -SELINUX=disabled - -注意: - 所有节点 -``` - -**禁用`swap`分区** - -```bash -[root@master ~]# swapoff -a -[root@master ~]# sed -i 's/.*swap.*/#&/' /etc/fstab - -注意: - 所有节点 -``` - -**加载内核模块** - -```bash -[root@master ~]# modprobe br_netfilter - -[root@master ~]# vim /etc/sysctl.conf -net.bridge.bridge-nf-call-ip6tables = 1 -net.bridge.bridge-nf-call-iptables = 1 -vm.swappiness=0 -net.ipv4.ip_forward = 1 - -注意: - 所有节点 -``` - -### 7. 安装`docker` - -```bash -[root@master ~]# yum install -y yum-utils -[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -[root@master ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y - -[root@master ~]# systemctl start docker -[root@master ~]# systemctl enable docker - -注意: - 所有节点 -``` - -### 8. 安装`kubeadm kubelet kubectl` - -**配置`yum`仓库** - -```bash -[root@master ~]# vim /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=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg - -注意: - 所有节点 -``` - -**安装** - -```bash -[root@master ~]# yum -y install kubeadm-1.23.5 kubelet-1.23.5 kubectl-1.23.5 ipvsadm - -注意: - 所有节点 -``` - -**配置`kubelet`的`cgroups`** - -```bash -[root@master ~]# vim /etc/sysconfig/kubelet - -KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1" - -注意: - 所有节点 -``` - -### 9. 部署镜像 - -**下载镜像** - -```bash -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/coredns-v1.8.6.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/etcd-3.5.1-0.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/flannel-cni.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/flannel-v0.14.0-amd64.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/flannel.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-apiserver-v1.23.5.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-controller-manager-v1.23.5.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-proxy-v1.23.5.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-scheduler-v1.23.5.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/pause-3.6.tar -[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-flannel-2402.yml - -注意: - 所有节点 -``` - -**镜像导入** - -```bash -[root@master ~]# vim image_load.sh -#!/bin/bash -image_path=`pwd` -for i in `ls "${image_path}"`; do - docker load < $i -done - -[root@master ~]# bash image_load.sh -注意: - 所有节点 -``` - -### 10. `master`节点初始化 - -```bash -[root@master ~]# kubeadm init --kubernetes-version=1.23.5 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.159.130 - -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.159.130:6443 --token vxpoqx.jfxg9ae302d2e1j9 \ - --discovery-token-ca-cert-hash sha256:3b77859462fbcdc312a158e02c77e60e28d41440801fed3cdee1556029a8547a - - -[root@master ~]# mkdir -p $HOME/.kube -[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config -[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config -[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf -[root@master ~]# kubectl apply -f kube-flannel-2402.yml -``` - -### 11. 将`node`加入工作节点 - -```bash -[root@node1/2/3 ~]# kubeadm join 192.168.159.130:6443 --token vxpoqx.jfxg9ae302d2e1j9 --discovery-token-ca-cert-hash sha256:3b77859462fbcdc312a158e02c77e60e28d41440801fed3cdee1556029a8547a -``` - -### 12. `master`节点查看集群状态 - -```bash -[root@master ~]# kubectl get nodes -NAME STATUS ROLES AGE VERSION -master Ready control-plane,master 3m11s v1.23.5 -node1 Ready 27s v1.23.5 -node2 Ready 43s v1.23.5 -``` - +

Kubernetes 集群

+ +------ + +## 一:部署kubernetes 集群 + +### 1. 前置知识点 + +目前生产部署`Kubernetes`集群主要有两种方式: + +- `kubeadm` + + `Kubeadm`是一个`K8s`部署工具,提供`kubeadm init`和`kubeadm join`,用于快速部署`Kubernetes`集群。 + + 官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/ + +- 二进制包 + + 从`github`下载发行版的二进制包,手动部署每个组件,组成`Kubernetes`集群。 + + `Kubeadm`降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署`Kubernetes`集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。 + +![](http://182.92.143.66:40072/directlink/img/kubernetes/images-202504120001.png) + +### 2. kubeadm 部署方式介绍 + +`kubeadm`是官方社区推出的一个用于快速部署`kubernetes`集群的工具,这个工具能通过两条指令完成一个`kubernetes`集群的部署: + +- 创建一个`Master`节点`kubeadm init` +- 将`Node`节点加入到当前集群中`$ kubeadm join ` + +### 3. 安装要求 + +在开始之前,部署`Kubernetes`集群机器需要满足以下几个条件: + +- 一台或多台机器,操作系统`CentOS7.x-86_x64` +- 硬件配置:`2GB`或更多`RAM`,2 个`CPU`或更多`CPU`,硬盘30GB 或更多 +- 集群中所有机器之间网络互通 +- 可以访问外网,需要拉取镜像 +- 禁止`swap`分区 + +### 4. 最终目标 + +- 在所有节点上安装`Docker`和`kubeadm` +- 部署`Kubernetes Master` +- 部署容器网络插件 +- 部署`Kubernetes Node`,将节点加入`Kubernetes`集群中 +- 部署`Dashboard Web`页面,可视化查看`Kubernetes`资源 + +### 5. 准备环境 + +![](http://182.92.143.66:40072/directlink/img/kubernetes/images-202504120002.png) + +| 节点 | IP地址 | 组件 | +| :----: | :-------------: | :-------------------------------: | +| master | 192.168.159.130 | docker,kubectl,kubeadm,kubelet | +| node1 | 192.168.159.131 | docker,kubectl,kubeadm,kubelet | +| node2 | 192.168.159.132 | docker,kubectl,kubeadm,kubelet | + +### 6. 环境初始化 + +**主机名解析** + +```bash +[root@master ~]# vim /etc/hosts +192.168.159.130 master +192.168.159.131 node1 +192.168.159.132 node2 + +注意: + 所有节点 +``` + +**禁用`iptable`和`firewalld`** + +```bash +[root@master ~]# systemctl stop firewalld +[root@master ~]# systemctl disable firewalld + +[root@master ~]# systemctl stop iptables +[root@master ~]# systemctl disable iptables + +注意: + 所有节点 +``` + +**禁止`selinux`** + +```bash +[root@master ~]# setenforce 0 +[root@master ~]# vim /etc/selinux/config +SELINUX=disabled + +注意: + 所有节点 +``` + +**禁用`swap`分区** + +```bash +[root@master ~]# swapoff -a +[root@master ~]# sed -i 's/.*swap.*/#&/' /etc/fstab + +注意: + 所有节点 +``` + +**加载内核模块** + +```bash +[root@master ~]# modprobe br_netfilter + +[root@master ~]# vim /etc/sysctl.conf +net.bridge.bridge-nf-call-ip6tables = 1 +net.bridge.bridge-nf-call-iptables = 1 +vm.swappiness=0 +net.ipv4.ip_forward = 1 + +注意: + 所有节点 +``` + +### 7. 安装`docker` + +```bash +[root@master ~]# yum install -y yum-utils +[root@master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo +[root@master ~]# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y + +[root@master ~]# systemctl start docker +[root@master ~]# systemctl enable docker + +注意: + 所有节点 +``` + +### 8. 安装`kubeadm kubelet kubectl` + +**配置`yum`仓库** + +```bash +[root@master ~]# vim /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=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg + +注意: + 所有节点 +``` + +**安装** + +```bash +[root@master ~]# yum -y install kubeadm-1.23.5 kubelet-1.23.5 kubectl-1.23.5 ipvsadm + +注意: + 所有节点 +``` + +**配置`kubelet`的`cgroups`** + +```bash +[root@master ~]# vim /etc/sysconfig/kubelet + +KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1" + +注意: + 所有节点 +``` + +### 9. 部署镜像 + +**下载镜像** + +```bash +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/coredns-v1.8.6.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/etcd-3.5.1-0.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/flannel-cni.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/flannel-v0.14.0-amd64.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/flannel.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-apiserver-v1.23.5.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-controller-manager-v1.23.5.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-proxy-v1.23.5.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-scheduler-v1.23.5.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/pause-3.6.tar +[root@master ~]# wget http://182.92.143.66:40072/directlink/img/kube_images/kube-flannel-2402.yml + +注意: + 所有节点 +``` + +**镜像导入** + +```bash +[root@master ~]# vim image_load.sh +#!/bin/bash +image_path=`pwd` +for i in `ls "${image_path}"`; do + docker load < $i +done + +[root@master ~]# bash image_load.sh +注意: + 所有节点 +``` + +### 10. `master`节点初始化 + +```bash +[root@master ~]# kubeadm init --kubernetes-version=1.23.5 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.159.130 + +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.159.130:6443 --token vxpoqx.jfxg9ae302d2e1j9 \ + --discovery-token-ca-cert-hash sha256:3b77859462fbcdc312a158e02c77e60e28d41440801fed3cdee1556029a8547a + + +[root@master ~]# mkdir -p $HOME/.kube +[root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config +[root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config +[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf +[root@master ~]# kubectl apply -f kube-flannel-2402.yml +``` + +### 11. 将`node`加入工作节点 + +```bash +[root@node1/2/3 ~]# kubeadm join 192.168.159.130:6443 --token vxpoqx.jfxg9ae302d2e1j9 --discovery-token-ca-cert-hash sha256:3b77859462fbcdc312a158e02c77e60e28d41440801fed3cdee1556029a8547a +``` + +### 12. `master`节点查看集群状态 + +```bash +[root@master ~]# kubectl get nodes +NAME STATUS ROLES AGE VERSION +master Ready control-plane,master 3m11s v1.23.5 +node1 Ready 27s v1.23.5 +node2 Ready 43s v1.23.5 +``` +