欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > docker和k8s

docker和k8s

2025/2/23 10:47:24 来源:https://blog.csdn.net/qq_56650001/article/details/144399786  浏览:    关键词:docker和k8s

一、简述

1.1 docker

是一个开源的应用容器引擎,负责创建和管理容器,将应用程序及其依赖打包到可移植的容器中,实现应用容器化。

Docker容器使用沙箱机制,相互之间不会有任何接口;
Docker的核心概念包括镜像、容器和仓库;
镜像类似于一个模板,容器是基于这个模板创建的运行实例,而仓库则用于存储这些镜像。

1.2 k8s

Kubernetes(K8s)则负责自动化部署、自动扩缩容、以及维护容器集群。它利用强大的容器编排能力,可以调度和管理多种容器,包括Docker容器‌ ,确保应用的高可用性和可扩展性

核心功能包括自动化部署、负载均衡、服务发现、自动伸缩、滚动更新等

1.3 联系

Docker通常被用于构建和推送容器镜像到仓库,而Kubernetes则负责管理和协调这些容器在生产环境中的生命周期和行为;

二、部署

2.1 docker安装

2.1.1 环境准备‌

确保服务器满足前置条件,如CPU、内存、硬盘等配置,并配置好网络互通和主机名映射
例如:
1、至少20G磁盘空间、2核CPU和2G内存;
2、操作系统推荐使用Ubuntu或CentOS;
3、所有服务器之间网络互通,并具有root或sudo权限;
4、确保所有服务器之间网络互通,并配置好主机名和hosts文件

‌2.1.2 安装

在每个集群节点上安装Docker,并进行必要的配置,包括设置镜像加速器和配置Docker守护程序的网络。‌

1、如果之前安装过Docker,需要先卸载旧版本‌

# 卸载Docker及相关组件
sudo apt-get remove docker \ docker-engine \  http:// docker.io

2、确保你的系统是最新的,并安装一些必要的依赖工具

sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

命令解释:
sudo yum update -y
sudo‌:以超级用户权限执行命令
‌yum‌:是一个基于RPM的包管理器,用于安装、更新和删除软件包
‌update‌:更新系统上的所有软件包到最新版本
‌-y‌:表示自动回答“yes”,避免在更新过程中需要手动确认

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum install‌:这是 yum 命令的基本用法,用于安装软件包
-y‌:告诉 yum 在安装过程中自动回答所有提示为yes
‌yum-utils‌:这是一个包含了一些额外的 yum 工具和实用程序的软件包
‌device-mapper-persistent-data‌:这是一个提供设备映射器的持久数据支持的软件包,通常用于高级存储管理和 LVM(逻辑卷管理)。
‌lvm2‌:这是逻辑卷管理器(LVM)的第二个版本,提供对逻辑卷的高级管理功能,包括创建、删除、调整大小和快照等。

3、安装Docker CE

# 安装
sudo yum install docker-ce docker-ce-cli containerd.io -y
# 启动
sudo systemctl start docker
# 设置开机自动启
sudo systemctl enable docker# 验证安装
docker --version

安装命令安装了三个包:
docker-ce:Docker社区版
docker-ce-cli:Docker命令行界面
containerd.io:一个便捷的容器运行时与容器 images 的管理

4、镜像加速(可选)

为了提高Docker镜像的下载速度,可以配置Docker的镜像加速

# 用于创建目录,其中-p参数表示如果目录的上级目录不存在,则一并创建上级目录
sudo mkdir -p /etc/docker# 命令会创建或编辑daemon.json文件;并指定镜像加速器地址;
# <your-url>替换为你选择的镜像加速器的URL
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://<your-url>"]
}
EOF# 重新加载systemd守护进程配置文件
sudo systemctl daemon-reloadsudo systemctl restart docker

常用的镜像加速器:
腾讯云镜像加速器‌:https://mirror.ccs.tencentyun.com
‌Docker官方镜像(中国区)‌:https://registry.docker-cn.com
‌阿里云镜像加速器‌:https://xxxxxx.mirror.aliyuncs.com(需要登录阿里云控制台获取具体地址)

2.2 k8s安装

2.2.1 环境准备

1、安装必要的软件包,​如yum-utils、device-mapper-persistent-data和lvm2;例如:上面docker安装的依赖工具

​2、关闭防火墙和swap

# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld# 禁用Selinux
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 临时关闭swap
sudo swapoff -a
# 永久关闭swap  
sudo sed -i '/ swap / s/\(.*\)$/#\1/g' /etc/fstab

sudo sed -i '/ swap / s/\(.*\)$/#\1/g' /etc/fstab
sudo sed -i 以超级用户权限直接编辑文本文件中的内容;
该命令就是找/etc/fstab文件中所有包含"swap"的行,并在这些行的开头添加"#"符号,从而将这些行注释掉,阻止系统在启动时自动挂载swap分区。

3、时间同步(确保每个节点的时间相同)

# 启动并启用chronyd服务
systemctl start chronyd && systemctl enable chronyd

4、设置主机名和配置hosts文件,确保每个节点有唯一的主机名和IP地址映射

根据规划设置主机名,在每个节点上各自执行hostnamectl set-hostname <hostname>
例如:
hostnamectl set-hostname k8s_master
hostnamectl set-hostname k8s_node01
hostnamectl set-hostname k8s_node02

在主节点上执行:

cat >> /etc/hosts << EOF
11.16.5.190 k8s_master
11.16.5.191 k8s_node01
11.16.5.192 k8s_node02
EOF
2.2.2 安装

1、添加Kubernetes仓库

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

2、安装kubelet、kubeadm和kubectl

sudo yum install -y kubelet kubeadm kubectl

3、启动并启用Kubelet服务

systemctl start kubelet && systemctl enable kubelet

 4、k8s初始化主节点(IP段更具需要更换);注意输出的kubeadm join命令,在其他服务器上加入 Kubernetes 群集时需要用到,复制此命令以供之后使用。

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

5、配置Kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

命令详解:
mkdir -p $ HOME/.kube
创建用户主目录下的.kube目录,用于存放Kubernetes的配置文件。

sudo cp -i /etc/kubernetes/admin.conf $ HOME/.kube/config
将系统级别的Kubernetes配置文件admin.conf复制到用户主目录下的.kube目录,并更名为config

sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ (id -u):这是一个命令替换,id -u 返回当前用户的ID,这里用它来获取当前用户的UID,并将其作为chown命令的参数,指定文件的新所有者。
$ (id -g):id -g 返回当前用户的组ID。这里用它来获取当前用户的GID,并将其作为chown命令的参数,指定文件的新所属组。
$ HOME/.kube/config:这是Kubernetes的配置文件路径。 $ HOME 代表当前用户的家目录,.kube/config 是Kubernetes配置的默认位置。

6、加入Node节点到集群;该命令在初始化主节点后会输出

sudo kubeadm join <ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

如果初始化完后没有保存该命令,可以手动查询:
<ip>:<port> 主节点ip端口
<token>用于加入节点的令牌,可以在主节点上通过kubeadm token create命令生成。
<hash>用于验证令牌的CA证书哈希值,可以在主节点上通过kubeadm token list命令获取。

7、在主节点验证集群

kubectl get nodes

如果所有节点都显示为Ready状态,则集群安装成功

三、使用

1、创建与管理Docker镜像‌

‌编写Dockerfile‌:使用Dockerfile定义应用程序的环境和依赖
‌构建Docker镜像‌:通过Docker构建命令,利用Dockerfile创建Docker镜像

2、推送镜像

可以通过查看/etc/docker/daemon.json配置文件来查看Docker配置的镜像仓库地址

3、编写Kubernetes清单文件

deployment.yaml文件示例:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: appName
spec:
  #定义了3个副本
  replicas: 3   
  selector:
    matchLabels:
      app: appName
  template:
    metadata:
      labels:
        app: appName
    spec:
      containers:
      - name: appName
        #使用appName:latest 镜像
        image: appName:latest   
        ports:
        - containerPort: 80


service.yaml文件示例:
apiVersion: v1
kind: Service
metadata:
  name: appName-service
spec:
  selector:
    app: appName
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer

4、使用以下命令创建上述资源:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词