【dockerhub-bug笔记】未解决废废,以后再说

系列文章目录


一、注册账号

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、登录

在这里插入图片描述在这里插入图片描述

1.登录邮箱验证

在这里插入图片描述

2.创建repository

在这里插入图片描述

3.登录服务器linux

在这里插入图片描述
docker logout 退出


4.安装 kubectl

如果你在 CentOS 上,你可以通过以下命令安装 kubectl:

添加 Kubernetes YUM 存储库

sudo vi /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

安装 kubectl 工具

sudo yum install -y kubectl

安装完成后,你就可以使用 kubectl 命令了。


5.向您展示一个完整的例子,展示如何使用Docker和Kubernetes容器技术部署一个简单的web应用。


首先,我们需要编写一个简单的web应用程序,例如使用Python Flask框架编写一个返回Hello World的应用程序。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

接下来,我们需要将这个应用程序容器化。我们可以使用Dockerfile来定义容器环境,例如:

FROM python:3.9-slim-buster

# Install dependencies
RUN pip install flask gunicorn

WORKDIR /app

# Copy application
COPY app.py .

# Start application with gunicorn
CMD ["gunicorn", "-b", "0.0.0.0:5000", "app:app"]

在Dockerfile中,我们使用Python 3.9镜像,安装了Flask和Gunicorn,并指定了应用程序的工作目录和启动方式。现在,我们可以使用Docker命令构建和上传该容器镜像到Docker Hub:

# Build Docker image
docker build -t your-docker-username/hello-world .

# Upload to Docker Hub
docker push your-docker-username/hello-world

接下来,我们可以使用Kubernetes部署该容器应用程序。在Kubernetes中,我们使用Deployment和Service资源来定义应用程序。

首先,我们可以创建一个Deployment资源,来定义容器的副本数量和镜像名称:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world
spec:
  replicas: 3
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: app
        image: your-docker-username/hello-world
        ports:
        - containerPort: 5000

在上述YAML文件中,我们定义了一个名为hello-world的Deployment,其中包含了3个副本的应用程序容器。我们使用selector和template来指定容器的标签和容器定义。容器定义中包含了容器的名称、镜像和端口。

接下来,我们可以创建一个Service资源,来暴露应用程序的端口并可以通过Kubernetes集群内部DNS访问该应用程序:

apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  selector:
    app: hello-world
  ports:
  - protocol: TCP
    port: 80
    targetPort: 5000
  type: ClusterIP

在上述YAML文件中,我们定义了一个名为hello-world的Service,该服务选择与hello-world标签匹配的Pod,并公开端口80,将流量转发到容器端口5000。

现在,我们可以使用kubectl命令创建Deployment和Service:

# Create Deployment
kubectl apply -f deployment.yaml

# Create Service
kubectl apply -f service.yaml

当Deployment和Service都创建成功后,我们就可以通过Service名称访问该应用程序。例如,在Kubernetes集群中,我们可以通过以下URL访问该应用程序:http://hello-world.default.svc.cluster.local。

以上是一个简单的例子,展示了如何使用Docker和Kubernetes容器技术部署一个web应用程序。在实际部署过程中,还需要考虑更多的因素,例如安全、存储、日志和监控等。

三,问题BUG

[root@ecsje7o demo]# kubectl apply -f deployment.yaml
The connection to the server localhost:8080 was refused - did you specify the right host or port?

解决过程

这个错误提示表示 kubectl 找不到 Kubernetes 集群的 API Server,可能是因为以下原因之一:
Kubernetes 集群没有正确启动或 API Server 没有运行。你可以通过以下命令检查 Kubernetes 是否正确启动:

			systemctl status kubelet
			
kubectl 的配置文件没有正确设置。你可以通过以下命令检查 kubectl 的配置文件路径:

			kubectl config current-context
			
确认配置文件路径是否正确,并检查配置文件中的 API Server 地址和端口是否正确设置。你可以通过以下命令查看当前配置文件的内容:

			kubectl config view
			
检查配置文件中的 cluster.server 是否设置为正确的 API Server 地址和端口。
如果以上检查均无问题,在应用 yaml 文件之前,你可以尝试重新建立与 Kubernetes 集群的连接:

			kubectl config use-context <context-name>
			
其中,<context-name> 可以替换为你想要使用的上下文名称。

四,问题二

Kubelet 的默认配置文件路径为 /etc/kubernetes/kubelet,您可以在该目录下找到 kubelet
的配置文件。您可以使用 cat 或者 less 命令查看 kubelet 的配置文件内容,但是我的这个目录是没东西的
如果你在 Linux 系统上运行的 Kubernetes,那么可能是因为你的 Kubernetes 安装不完整或未正确安装导致的。你可以考虑使用一些命令来检查和修复问题:

确认 Kubernetes 安装是否完整:

sudo kubeadm reset
sudo kubeadm init

确认 Kubernetes 相关服务是否处于运行状态:

systemctl status kubelet.service
systemctl status docker.service

检查 Kubernetes 文件系统:

ls -al /etc/kubernetes/

如果你在运行 Kubernetes 的虚拟机上运行 Linux 系统,请确保你已经正确安装了 Kubernetes,而不是运行了虚拟化后,忘记安装 Kubernetes。建议你重新安装 Kubernetes,以确保所有必需的文件和服务都正确创建并运行。

当然如果出现sudo: kubeadm: command not found:我用的是CentOS apt-get—>yum

sudo yum update && sudo yum install -y apt-transport-https curl
sudo rpm --import https://packages.cloud.google.com/apt/doc/apt-key.gpg
## curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo mkdir -p /etc/apt/sources.list.d/
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo yum update
sudo yum install -y kubelet kubeadm kubectl

安装后,运行以下命令以重置 Kubernetes 配置:

sudo kubeadm reset

请注意,在重置 Kubernetes 配置之前,必须删除任何部署在 Kubernetes 集群中的应用程序和服务。

按照下面的步骤进行操作:

删除所有 Kubernetes 上运行的应用程序和服务。您可以通过运行 kubectl delete deployment <deployment-name> 和 kubectl delete service <service-name> 命令来删除相应的部署和服务。

删除所有 Kubernetes 上的配置信息。您可以通过运行 kubectl delete configmap --all 和 kubectl delete secret --all 命令来删除相应的配置信息。

删除所有 Kubernetes 上的持久卷声明。您可以通过运行 kubectl delete pvc --all 命令来删除所有的持久卷声明。

删除所有 Kubernetes 上的命名空间。您可以通过运行 kubectl delete ns --all 命令来删除所有的命名空间

通过以上步骤完成后,您可以删除 Kubernetes 集群的配置文件,然后重新配置和启动 Kubernetes 集群。

注意:上述操作将会删除 Kubernetes 集群中的所有数据和配置,因此请确保在操作之前做好备份。一旦删除,就无法恢复数据。

猜你喜欢

转载自blog.csdn.net/qq_42700796/article/details/130963925