容器和云原生(三):kubernetes搭建与使用

news/2024/7/4 7:46:00 标签: 云原生, kubernetes, 容器

       

目录

单机K8S

docker

containerd

image依赖

kubeadm初始化

验证

crictl工具

K8S核心组件


上文安装单机docker是很简单docker,但是生产环境需要多个主机,主机上启动多个docker容器,相同容器会绑定形成1个服务service,微服务场景中多个service会互相调用,那么就需要保证多个service服务的编排、高可用、负载均衡,docker提供了自己的解决方案:docker-compose + docker-swarm,也可以不用docker提供的解决方案,自己通过Nginx+服务网关+HaProxy实现。

        但是基本上所有线上生产环境都是用K8S来服务治理,这也被认为是标准答案,K8S从V1.24版本不支持docker而是contained做为默认容器管理,contained实际上是轻量化的docker,本次搭建k8s+containerd的集群,因此k8s多节点集群相对繁琐且有资源要求,本次单机搭建。

单机K8S

        2022年k8s的1.24版本正式剔除dockershim,不再支持让docker去调用containerd,而是直接操作containerd,先安装containerd来替换CRI接口调用,本次使用最新版本v1.28.0;

 

docker

安装docker用于后续依赖 image拉取;

containerd

# 下载 containerd
wget https://github.com/containerd/containerd/releases/download/v1.6.19/containerd-1.6.19-linux-amd64.tar.gz
# 下载contained服务
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /usr/lib/systemd/system/containerd.service
# 启动服务
systemctl daemon-reload && systemctl enable containerd
# 配置文件
mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
# 需要镜像地址为国内的
vi /etc/containerd/config.toml
将 sandbox_image = "registry.k8s.io/pause:3.6"
修改为 sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"
# 配置镜像加速器,在 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 后面增加两行配置,注意缩进
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["http://mirrors.ustc.edu.cn"]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."*"]
    endpoint = ["http://hub-mirror.c.163.com"]
# 启动服务
systemctl restart containerd

image依赖

kubeadm:用来初始化集群的指令,kubelet在集群中的每个节点上用来启动 Pod 和容器等,kubectl:用来与集群通信的命令行工具,步骤中的docker image安装可以不用;

# 关闭selinux
setenforce 0
# 增加yum源
vi /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=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
 http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# yum 安装
yum makecache all
yum install -y kubelet kubeadm kubectl
# 启动kubelet
systemctl enable kubelet && systemctl start kubelet
# docker依赖安装(可选)
vi install.sh
#!/bin/bash
images=(
    kube-apiserver:v1.28.0
    kube-controller-manager:v1.13.2
    kube-scheduler:v1.28.0
    kube-proxy:v1.28.0
    pause:3.6
    etcd:3.2.24
    coredns:1.2.6
)
for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done
# 运行install.sh(可选)
sh -x install.sh
# 查看镜像(可选)
docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-apiserver            v1.28.0             bb5e0dde9054        2 days ago          126 MB
k8s.gcr.io/kube-controller-manager   v1.28.0             4be79c38a4ba        2 days ago          122 MB
k8s.gcr.io/kube-scheduler            v1.28.0             f6f496300a2a        2 days ago          60.1 MB
k8s.gcr.io/kube-proxy                v1.28.0             ea1030da44aa        2 days ago          73.1 MB
docker.io/becivells/soar-web         latest              93daf9d511a1        11 months ago       134 MB
k8s.gcr.io/coredns                   1.2.6               f59dcacceff4        4 years ago         40 MB
k8s.gcr.io/etcd                      3.2.24              3cab8e1b9802        4 years ago         220 MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        5 years ago         742 kB

# 网络
vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

kubeadm初始化

# 使用root启动设置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
# 初始化
kubeadm init --apiserver-advertise-address=10.121.198.235 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.0   --service-cidr=172.96.0.0/12 --pod-network-cidr=10.244.0.0/16

验证

# 查看集群信息
kubectl cluster-info
Kubernetes control plane is running at https://10.121.198.235:6443
CoreDNS is running at https://10.121.198.235:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

# 查看pod信息
get pod -n kube-system
NAME                                            READY   STATUS    RESTARTS   AGE
coredns-66f779496c-d4rk9                        1/1     Running   0          71m
coredns-66f779496c-fvmzn                        1/1     Running   0          71m
etcd-localhost.localdomain                      1/1     Running   0          71m
kube-apiserver-localhost.localdomain            1/1     Running   0          71m
kube-controller-manager-localhost.localdomain   1/1     Running   0          71m
kube-proxy-tr75q                                1/1     Running   0          71m
kube-scheduler-localhost.localdomain            1/1     Running   0          71m

crictl工具

# 安装 containerd 的 cli 管理工具(此步骤是非必选项)
# 官方文档https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md
# 下载解压
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.26.0/crictl-v1.26.0-linux-amd64.tar.gz
tar zxvf crictl-v1.26.0-linux-amd64.tar.gz -C /usr/local/bin
# 创建配置文件,运行 crictl config 命令可获取参数说明
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: false
disable-pull-on-run: false
EOF
# 测试
crictl pods
POD ID              CREATED             STATE               NAME                                            NAMESPACE           ATTEMPT             RUNTIME
c9f1f5a8e5f3b       About an hour ago   Ready               coredns-66f779496c-fvmzn                        kube-system         0                   (default)
92acc7d225059       About an hour ago   Ready               coredns-66f779496c-d4rk9                        kube-system         0                   (default)
2fdff0229921a       About an hour ago   Ready               kube-proxy-tr75q                                kube-system         0                   (default)
8cad99418e8dd       About an hour ago   Ready               kube-apiserver-localhost.localdomain            kube-system         0                   (default)
2f366285dbe4e       About an hour ago   Ready               kube-controller-manager-localhost.localdomain   kube-system         0                   (default)
ab2fb7aa95e40       About an hour ago   Ready               kube-scheduler-localhost.localdomain            kube-system         0                   (default)
c25f77697cc84       About an hour ago   Ready               etcd-localhost.localdomain                      kube-system         0                   (default)

K8S核心组件

待续

参考:搭建containerd+k8s集群-v1.26

参考:安装docker依赖


http://www.niftyadmin.cn/n/4950179.html

相关文章

科技项目验收检测报告获取有哪些注意事项,作用都有哪些?

验收测试报告 软件从研发到结束是一个很长的周期&#xff0c;对于软件想要完成上市或者是交付到用户手中之前我们还需要进行一次全面检测&#xff0c;也就是科技项目验收测试&#xff0c;此测试有着严格的要求&#xff0c;需要第三方软件测评机构来完成&#xff0c;并出具科技…

SCSS 学习笔记 和 vscode下载live sass compiler插件配置

1、下载livelive sass compiler插件并配置 // 在 已有代码 下面 添加下面 代码&#xff0c;一般刚刚下载打开最后一行是&#xff1a;// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面复制进去保存就行"liveSassCompile.settings.autoprefix&qu…

【ES6】箭头函数和普通函数的区别

它们之间的区别&#xff1a; &#xff08;1&#xff09;箭头函数没有自己的this。 &#xff08;2&#xff09;不可以当作构造函数&#xff0c;不可以对箭头函数使用new命令&#xff0c;否则抛出错误。 &#xff08;3&#xff09;不可以使用arguments对象&#xff0c;该对象在函…

详解web前端长度单位(px、em、rem、%、vw/vh、vmin/vmax、vm、calc())

1&#xff09;简介 在前端开发中&#xff0c;会遇到各种不同类型的长度单位&#xff0c;比如px,em,rem等。 而整体的长度单位分为两大类&#xff1a; 绝对长度单位包括&#xff1a;in,cm, mm, q, pt, pc, px 相对长度单位包括&#xff1a;em, rem, %, vw, vh, vmax, vmin, vm,…

安全(权限)框架Shiro概述及原理

1.1 Shiro是什么 Apache Shiro是一个功能强大且易于使用的Java安全&#xff08;权限&#xff09;框架。Shiro可以完成&#xff1a;认证、授权、加密、会话管理、与Web集成、缓存 等。借助Shiro您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的Web和企业应用…

antd5源码调试环境启动(MacOS)

将源码下载至本地 这里antd5 版本是5.8.3 $ git clone gitgithub.com:ant-design/ant-design.git $ cd ant-design $ npm install $ npm start前提&#xff1a;安装python3、node版本18.14.0(这是本人当前下载的版本&#xff09; python3安装教程可参考&#xff1a;https://…

NetApp StorageGRID 对象存储软件的主要功能

NetApp StorageGRID 对象存储软件&#xff0c;专为混合多云体验打造的对象存储 StorageGRID 通过简化的平台为对象数据提供更强大的数据管理智能。由于 StorageGRID 利用 S3&#xff0c;因此可以轻松地连接混合云工作流&#xff0c;提供流畅的数据传输&#xff0c;以满足您的业…

mysql全文检索使用

数据库数据量10万左右&#xff0c;使用like %test%要耗费30秒左右&#xff0c;放弃该办法 使用mysql的全文检索 第一步:建立索引 首先修改一下设置: my.ini中ngram_token_size 1 可以通过 show variables like %token%;来查看 接下来建立索引:alter table 表名 add f…