From 71c89f07c7d7e5f77cf9db5904756109ada79b1b Mon Sep 17 00:00:00 2001 From: Jackey_1024 Date: Fri, 18 Aug 2023 02:10:37 +0000 Subject: [PATCH] update docs/OCS/Virtualization_and_Containers_Guide/Kubernetes_UserGuide.md. Signed-off-by: Jackey_1024 --- .../Kubernetes_UserGuide.md | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/OCS/Virtualization_and_Containers_Guide/Kubernetes_UserGuide.md b/docs/OCS/Virtualization_and_Containers_Guide/Kubernetes_UserGuide.md index 3f5b71eb..c4b8c7f2 100644 --- a/docs/OCS/Virtualization_and_Containers_Guide/Kubernetes_UserGuide.md +++ b/docs/OCS/Virtualization_and_Containers_Guide/Kubernetes_UserGuide.md @@ -1,12 +1,12 @@ -## 1.简介 +# 1.简介 Kubernetes是CNCF基金会开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。 本文简要介绍通过kubeadm在本系统上面部署kubernetes集群的过程。 -## 2.环境准备 +# 2.环境准备 vitual box虚拟机2台,os版本如下: -```Plain Text +``` [root@kube-master ~]# cat /etc/os-release NAME="OpenCloudOS Stream" VERSION="23" @@ -23,27 +23,27 @@ BUG_REPORT_URL="https://bugs.opencloudos.tech/" 内核版本为6.1.26,虚拟机网络为Nat模式。目标集群为1个master节点,1个node节点,节点信息列表如下: |主机名|IP|节点类型|CPU|内存|磁盘| -| ----- | ----- | ----- | ----- | ----- | ----- | +| :--- | :--- | :--- | :--- | :--- | :--- | |kube-master|10.0.2.6|master|4vCPU|8G|20G| |kube-node|10.0.2.5|node|4vCPU|8G|20G| 注意:所有节点均可访问k8s默认的镜像仓库,否则需要提前下载好镜像并修改相关配置,本文不展开讲述。 -## 3.系统设置 +# 3.系统设置 * 设置主机名 master节点: -```Plain Text +``` hostnamectl set-hostname kube-master ``` node节点: -```Plain Text +``` hostnamectl set-hostname kube-node ``` * 设置主机名与IP地址解析 -```Plain Text +``` [root@kube-master ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 @@ -52,26 +52,26 @@ hostnamectl set-hostname kube-node ``` * 关闭防火墙(所有节点均需设置) -```Plain Text +``` systemctl stop firewalld systemctl disable firewalld ``` * 关闭selinux -```Plain Text +``` sed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 ``` * 关闭swap分区 -```Plain Text +``` #swap开启会影响k8s编排和调度应用程序运行的效果,会降低性能 swapoff -a # 临时关闭 # sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭 ``` * 配置内核转发及网桥过滤 -```Plain Text +``` cat >/etc/sysctl.d/k8s.conf < /etc/sysconfig/modules/ipvs.modules < /etc/containerd/config.toml ``` 1)修改grpc监听地址为/run/containerd/containerd.sock 2)修改cni插件的安装地址,最好设置为/opt/cni/bin 3)重启containerd -```Plain Text +``` systemctl deamon-reload systemctl enable containerd && systemctl start containerd ``` 使用crictl查看容器及镜像 -```Plain Text +``` alias crictl='crictl -i unix:///run/containerd/containerd.sock -r unix:///run/containerd/containerd.sock' ``` * 安装cni插件 -```Plain Text +``` yum install containernetworking-plugins -y cp /usr/libexec/cni/* /opt/cni/bin/. ``` * master节点执行kubeadm init -```Plain Text +``` kubeadm init --kubernetes-version=v1.24.4 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=10.0.2.6 --cri-socket unix:///var/run/containerd/containerd.sock ``` \--kubernetes-version 指定k8s的版本 @@ -204,13 +204,13 @@ kubeadm init --kubernetes-version=v1.24.4 --pod-network-cidr=10.224.0.0/16 --api 也可以导出默认的init-config文件进行执行,此时需要进入文件修改以上选项对应的值 -```Plain Text +``` kubeadm config print init-defaults kubeadm init --config kubeadm-config.yaml ``` * 执行结束后,按照提示执行: -```Plain Text +``` mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config @@ -218,18 +218,18 @@ kubeadm init --config kubeadm-config.yaml ``` * 最后,按照给出的token在node节点上执行: -```Plain Text +``` kubeadm join 10.0.2.6:6443 --token scf3d2.qfewv9mjvpdx5o59 \ --discovery-token-ca-cert-hash sha256:661cca7503c83249a7960e3162030edde9b6e3acd5c68bcd3b807413d899f1fb ``` 如果忘了以上命令,执行以下命令可以找到: -```Plain Text +``` kubeadm token create --print-join-command ``` * 执行以下命令可以看到集群中的pod,此时网络插件没有部署,coredns处于pending状态 -```Plain Text +``` [root@kube-master ~]# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6d4b75cb6d-5fg49 0/1 Pending 0 5h26m @@ -243,26 +243,26 @@ kube-system kube-scheduler-kube-master 1/1 Running 11 ``` * 集群中的master,node节点处于NotReady状态,下一步部署cni网络插件后即可处于Ready状态 -```Plain Text +``` [root@kube-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kube-master NotReady control-plane 5h30m v1.24.4 kube-node NotReady 5h30m v1.24.4 ``` -## 5.安装flannel网络插件 +# 5.安装flannel网络插件 k8s的有多种网络方案,比较知名的网络方案有flannel,calico,cilium,具体的介绍可以查看[k8s网络方案介绍](https://kubernetes.io/docs/concepts/cluster-administration/addons/) 我们选取flannel网络方案进行部署。flannel是一种overlay三层网络方案,可以以UDP、vxlan、VPC等作为backend * 获取最新的flannel部署yaml文件并执行: -```Plain Text +``` wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml ``` 如果网络插件部署成功,master节点上面可以看到所有pod均处于ready状态 -```Plain Text +``` [root@kube-master ~]# kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-flannel kube-flannel-ds-2gt9r 1/1 Running 0 30s @@ -278,7 +278,7 @@ kube-system kube-scheduler-kube-master 1/1 Running ``` 各个节点此时也会处于Ready状态 -```Plain Text +``` [root@kube-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kube-master Ready control-plane 6h3m v1.24.4 @@ -286,7 +286,7 @@ kube-node Ready 6h3m v1.24.4 ``` * 如果有pod处于其他状态,如Pending、CrashLoopBackOff等,可以执行kubectl describe查看具体的原因: -```Plain Text +``` [root@kube-master ~]# kubectl describe pod kube-proxy-jtkkg -n kube-system Events: Type Reason Age From Message @@ -302,7 +302,7 @@ Events: ``` * 可以看到node节点上面kube-proxy反复重启,提示网络有问题,需要排查具体的原因。可以通过一下命令重置k8s集群: -```Plain Text +``` kubectl delete -f kube-flannel.yml //重置网络方案 kubeadm reset -f // 重置k8s基础组件 rm -rf /etc/cni/net.d //删除网络插件配置 -- Gitee