系列文章目录
一、注册账号
二、登录
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 集群中的所有数据和配置,因此请确保在操作之前做好备份。一旦删除,就无法恢复数据。