自学内容网 自学内容网

K8S简介及其部署

一 kubernetes 简介

在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年

Borg系统运行管理着成千上万的容器应用。

Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经 验和教训。

Kubernetes对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交 给用户。

kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器 进行管理。目的是实现资源管理的自动化,主要提供了如下的主要功能:

自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器

弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整

服务发现:服务可以通过自动发现的形式找到它所依赖的服务

负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡

版本回退:如果发现新发布的程序版本有问题,可以立即回退到原来的版本

存储编排:可以根据容器自身的需求自动创建存储卷

二 K8S集群环境搭建

2.1 k8s中容器的管理方式

K8S 集群创建方式有3种:

centainerd

默认情况下,K8S在创建集群时使用的方式

docker

Docker使用的普记录最高,虽然K8S在1.24版本后已经费力了kubelet对docker的支持,但时可以借助 cri-docker方式来实现集群创建

cri-o

CRI-O的方式是Kubernetes创建容器最直接的一种方式,在创建集群的时候,需要借助于cri-o插件的方 式来实现Kubernetes集群的创建。

2.2 k8s 集群部署

2.2.1 集群环境初始化
2.2.1.1.所有禁用swap和本地解析
systemctl mask swap.target
swapoff -a
vim /etc/fstab

 /etc/fstab
 Created by anaconda on Sun Feb 19 17:38:40 2023
 Accessible filesystems, by reference, are maintained under '/dev/disk'
 See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
 
2.2.1.2.所有安装docker
vim /etc/yum.repos.d/docker.repo

 [docker]
 name=docker
 baseurl=https://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
 gpgcheck=0


dnf install docker-ce -y
2.2.1.3.所有节点设定docker的资源管理模式为systemd
vim /etc/docker/daemon.json

 {
        "registry-mirrors": ["https://reg.timinglee.org"],
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
                "max-size": "100m"
       },
        "storage-driver": "overlay2"
}
2.2.1.4.所有阶段复制harbor仓库中的证书并启动docker
ls -l /etc/docker/certs.d/reg.timinglee.org/ca.crt
systemctl enable --now docker


docker login reg.timinglee.org
docker info
2.2.1.5 安装K8S部署工具
vim /etc/yum.repos.d/k8s.repo
  [k8s]
  name=k8s
  baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.30/rpm
  gpgcheck=0

dnf install kubelet-1.30.0 kubeadm-1.30.0 kubectl-1.30.0 -y
2.2.1.6 设置kubectl命令补齐功能
dnf install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
2.2.1.7 在所节点安装cri-docker
dnf install libcgroup-0.41-19.el8.x86_64.rpm \ 
  > cri-dockerd-0.3.14-3.el8.x86_64.rpm -y


vim /lib/systemd/system/cri-docker.service
  [Unit]
  Description=CRI Interface for Docker Application Container Engine
  Documentation=https://docs.mirantis.com
  After=network-online.target firewalld.service docker.service
  Wants=network-online.target
  Requires=cri-docker.socket
  [Service]
  Type=notify
  ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --networkplugin=cni
  --pod-infra-container-image=reg.timinglee.org/k8s/pause:3.9
  ExecReload=/bin/kill -s HUP $MAINPID
  TimeoutSec=0
  RestartSec=2
  Restart=always

systemctl daemon-reload
systemctl start cri-docker
ll /var/run/cri-dockerd.sock
2.2.1.8 在master节点拉取K8S所需镜像
kubeadm config images pull \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock

docker images | awk '/google/{ print $1":"$2}' \
| awk -F "/" '{system("docker tag "$0" reg.timinglee.org/k8s/"$3)}'

docker images | awk '/k8s/{system("docker push "$1":"$2)}'
2.2.1.9 集群初始化
systemctl status kubelet.service

kubeadm init --pod-network-cidr=10.244.0.0/16 \
--image-repository reg.timinglee.org/k8s \
--kubernetes-version v1.30.0 \
--cri-socket=unix:///var/run/cri-dockerd.sock

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> 
~/.bash_profile

kubectl get node
kubectl get pod -A
kubeadm token create --print-join-command
2.2.1.10 安装flannel网络插件
wget https://github.com/flannelio/flannel/releases/latest/download/kube-flannel.yml
docker pull docker.io/flannel/flannel:v0.25.5
docekr docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1
docker tag flannel/flannel:v0.25.5 \
docker push reg.timinglee.org/flannel/flannel:v0.25.5

docker tag flannel/flannel-cni-plugin:v1.5.1-flannel1 \
reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1

docker push reg.timinglee.org/flannel/flannel-cniplugin:v1.5.1-flannel1

vim kube-flannel.yml
 image: reg.timinglee.org/flannel/flannel:v0.25.5
 image: reg.timinglee.org/flannel/flannel-cni-plugin:v1.5.1-flannel1
 image: reg.timinglee.org/flannel/flannel:v0.25.5

grep -n image kube-flannel.yml
kubectl apply -f kube-flannel.yml


原文地址:https://blog.csdn.net/2302_77584988/article/details/142825840

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!