ToB企服应用市场:ToB评测及商务社交产业平台

标题: kubernetes学习二----1.27.1摆设、安装 [打印本页]

作者: 种地    时间: 2024-8-17 06:18
标题: kubernetes学习二----1.27.1摆设、安装
一、根本信息先容

kubernetes: 1.27.1
体系:centos 7.9
etcd:3.5.7
containerd:1.6.20
runc:1.1.5
docker-ce:20.10.24(安装后显示的23.0.4,可能是合并了)
发起内核升级到5.10
本次安装就只有一个master和一个node节点
master:192.168.180.89
node:192.168.180.201
网络插件:calico 3.25.1 (虽然目前是最新版本,官方文档没显示支持kubernetes1.27,但测试安装可以使用)
本次接纳kubeadm方式安装。
二、环境预备

以下操作两个节点都要操作,发起使用ansible同时操作。
1、关闭防火墙

  1. systemctl stop firewalld
  2. systemctl disable firewalld
复制代码
2、关闭selinux

  1. sed -i 's/enforcing/disabled/' /etc/selinux/config
  2. setenforce 0
复制代码
3、关闭swap

  1. sed -ri 's/.*swap.*/#&/' /etc/fstab
  2. swapoff -a
复制代码
4、添加本地dns剖析

  1. cat >> /etc/hosts << EOF
  2. 192.168.180.89 master01
  3. 192.168.180.201 node01
  4. EOF
复制代码
5、添加内核模块和开启ipv4转发、网桥参数

(1)加载内核模块:
  1. cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
  2. overlay
  3. br_netfilter
  4. EOF
  5. modprobe overlay
  6. modprobe br_netfilter
复制代码
(2)添加内核参数
  1. vi /etc/sysctl.conf
  2. #追加以下内容
  3. net.ipv4.ip_forward = 1
  4. net.bridge.bridge-nf-call-ip6tables = 1
  5. net.bridge.bridge-nf-call-iptables = 1
  6. sysctl --system  #生效
复制代码
有教程是在/etc/sysctl.d/k8s.conf自建文件添加,但没有上一步的加载内核模块,会导致网桥参数不能生效。不执行以上这两步,背面都有可能报错。也可以sysctl -f /etc/k8s.conf加载指定文件里面的参数。
6、时间同步

  1. yum install ntp -y
  2. ntpdate ntp2.aliyun.com
复制代码
三、安装docker&containerd

kubernetes1.20版本后不在直接由docker daemon处理镜像操作,转为直接与containerd服务交互后,去调用runc去处理镜像操作。在此安装docker-ce的同时会自动安装containerd服务。
发起先将yum基础源换成国内的,这里不演示。由于centos7的基础源都不是最新的docker-ce版本,所有还要添加一个专门的docker源(国内阿里云的源)来安装教新的版本。
  1. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  2. yum makecache
  3. #安装指定版本的docker:
  4. yum install docker-ce-20.10.24 -y
复制代码
docker镜像加快(这步不是必须的,因为背面根本都是国外的源大概本身手动下载的镜像):
  1. vi /etc/docker/daemon.json
  2. {
  3.   "registry-mirrors": ["https://lgernt2z.mirror.aliyuncs.com"]
  4. }
复制代码
四、安装kubectl、kubeadm、kubelet

   Kubelet:
运行在cluster所有节点上,负责启动POD和容器
Kubeadm:
用于初始化cluster的一个工具
Kubectl:
kubectl是kubenetes下令行工具,通过kubectl可以摆设和管理应用,检察各种资源,创建,删除和更新组件
  直接安装是用的谷歌的源,我们更换为aliyun的源
  1. cat > /etc/yum.repos.d/kubernetes.repo << EOF
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  5. enabled=1
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  9. EOF
  10. yum makecache
  11. yum install kubelet-1.27.1 kubeadm-1.27.1 kubectl-1.27.1 -y
复制代码
检查下版本:
kubeadm version
kubectl version --client
kubelet --version
末了我们将相干服务设置成开机自启:
  1. systemctl enable containerd
  2. systemctl enable docker
  3. systemctl enable kubelet
复制代码
五、初始化kubernetes的master节点

之前步调必要在master和node上都执行,本步调只在master执行。
(1)初始化

  1. kubeadm init \
  2. --apiserver-advertise-address=192.168.180.89 \
  3. --control-plane-endpoint=master01 \
  4. --image-repository  registry.aliyuncs.com/google_containers \
  5. --kubernetes-version v1.27.1  \
  6. --service-cidr=10.10.0.0/12  \
  7. --pod-network-cidr=10.254.0.0/16
复制代码
经测试,尽管我们指定了参数image-repository镜像堆栈为aliyun,但初始化的时候仍旧会去k8s.io拉取镜像,由于众所周知的缘故原由拉取会失败,以及会出现cgroup相干的告警,我们必要修改相干设置。
(2)修改containerd设置

本步调node节点也要同样的修改
  1. cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
  2. #备份源文件
  3. containerd config default > /etc/containerd/config.toml
  4. vi /etc/containerd/config.toml
复制代码
  1. 找到SystemdCgroup = false这一行,将false改为true。
  2. 找到包含sandbox_image这一行,将地址改为“registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9”
复制代码
  1. systemctl restart containerd#重启生效修改后的配置
复制代码
(3)再次执行初始化

再次执行第一步之前,我们可以先手动拉取所需的镜像(非必须)
  1. #查看会拉取的镜像清单
  2. kubeadm config images list
  3. #手动提前拉取镜像,可以看到拉取过程及拉取情况
  4. kubeadm config images pull
复制代码
  1. Your Kubernetes control-plane has initialized successfully!
复制代码
出现上述语句说明初始化成功
将末了的语句生存下来,用来添加node节点:
  1. kubeadm join master01:6443 --token duccxz.6h3ljhxgyw05558s \
  2.         --discovery-token-ca-cert-hash sha256:1975d525e3ce447291a8630bdd105f04ea8e63881f4ac66f1e0e81f353ed6c7e
复制代码
如果忘记生存:kubeadm token create --print-join-command这个下令可以重新获取
(4)检查初始化情况

  1. kubectl get pod -n kube-system
复制代码
如果出现:couldn’t get current server API group list: Get “http://localhost:8080/api?timeout=32s”: dial tcp 127.0.0.1:8080: connect: connection refused
必要执行下面操作
方法1:
  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制代码
方法2:
  1. sudo vim /etc/profile
  2. export KUBECONFIG=/etc/kubernetes/admin.conf
  3. source /etc/profile
复制代码

成功后显示,上面是安装calico和添加node后的情况,按步调执行下来要少一些pod。
(5)添加node节点

  1. kubeadm join master01:6443 --token duccxz.6h3ljhxgyw05558s \
  2.         --discovery-token-ca-cert-hash sha256:1975d525e3ce447291a8630bdd105f04ea8e63881f4ac66f1e0e81f353ed6c7e
复制代码
在node节点上执行。
成功后返回master上执行:
  1. kubectl get nodes -A
复制代码

没安装网络插件之前,STATUS应该是not ready状态。我的已经安装了,以是是Ready状态。
六、安装网络插件

目前主流的网络插件是flannel和calico,这里只演示calico。
本人多方查找并未找到calico大概flannel的国内源。并且本次是安装的最新版。
根本目前找到的教程大概资源给到的calico.yaml文件都是来自https://raw.githubusercontent.com,国内无法打开。image虽然可以拉取,但是拉取速度非常慢,单个镜像本人网速环境拉取超过一个小时,故直接去calico的GitHub官方堆栈下载了整个calico 3.25.1的安装包。地址如下:
  1. https://github.com/projectcalico/calico/releases
  2. 国内是可以正常打开GitHub代码仓库的,虽然速度慢了点儿,但比直接拉取要快不少。
复制代码

这个包含了yaml和image,虽然是国外的资源和巨细有1个G,但只下载了大约半个小时,已经算很快了。
将release-v3.25.1.tgz包上传到master节点上。
  1. tar vxf release-v3.25.1.tgz
  2. #解压完后会有个release-v3.25.1的目录,下面有manifests和images
  3. crictl images list
  4. #查看当前kubernetes环境下有哪些镜像
  5. ctr namespace list
  6. #查看有哪些命名空间,默认导入镜像会到default这个命名空间
  7. ctr --namespace=k8s.io images import calico-kube-controllers.tar
  8. ctr --namespace=k8s.io images import calico-node.tar
  9. ctr --namespace=k8s.io images import calico-cni.tar
  10. #需要指定导入的命名空间为k8s.io,如果不在image目录下,镜像要写绝对路径
  11. crictl image list
  12. #查看导入的镜像,见下图
复制代码

直接用yaml文件创建calico的pod。
  1. kubectl apply -f calico.yaml
  2. #这个文件在release-v3.25.1/manifests/calico.yaml,不在当前目录下,请写绝对路径
复制代码
等待竣事后,通过kubectl get pods -n kube-system检察calico的pod:

coredns的pod也正常了。
至此根本环境的安装竣事。
补充

如果crictl执行出现雷同:
  1. WARN[0000] image connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
  2. ERRO[0002] connect endpoint 'unix:///var/run/dockershim.sock', make sure you are running as root and the endpoint has been started: context deadline exceeded
复制代码
这样的错误,可以执行下面语句举行修正
  1. cat <<EOF> /etc/crictl.yaml
  2. runtime-endpoint: unix:///run/containerd/containerd.sock
  3. image-endpoint: unix:///run/containerd/containerd.sock
  4. timeout: 10
  5. debug: false
  6. EOF
复制代码
其他:
yum search docker-ce只显示一个版本(大概查找其他安装包不显示全部可用版本),可以添加–showduplicates
例如:yum search docker-ce --showduplicates

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4