Kubernetes(k8s)是一种开源容器编排系统,它可以轻松管理和部署容器化应用程序。
此教程假定已经具备以下技能:
- 熟悉 Linux 系统管理和命令行界面。
- 了解容器和 Docker。
- 熟悉云服务器和网络配置。
现在,开始!!!
一、安装 Docker
首先,需要在所有节点上安装 Docker。Docker 是一种开源容器平台,它可以帮助您轻松地创建、部署和运行容器化应用程序。
要在 Ubuntu 上安装 Docker,请运行以下命令:
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
二、安装 Kubernetes 工具
要在 Ubuntu 上安装 Kubernetes 工具,请运行以下命令:
sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl kubelet kubeadm
三、初始化 Kubernetes Master 节点
在此步骤中,将初始化 Kubernetes Master 节点。
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
此命令将初始化 Kubernetes 集群,并生成一个命令,需要在其他节点上运行它。请将此命令保存到文本文件中,以便稍后使用。
四、加入 Kubernetes Node 节点
运行 kubeadm init 命令后,它会输出一个命令,您需要在其他节点上运行它。例如:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
将此命令复制到其他节点上,并用在 Master 节点上生成的实际命令替换其中的 IP 地址和令牌。然后运行此命令。
五、安装网络插件
在此步骤中,将安装 Kubernetes 网络插件,以确保容器可以在集群内通信。
要安装网络插件,可以选择使用 Calico、Flannel 或 Weave Net。在本教程中,下面使用 Calico。
kubectl apply -f https://docs.projectcalico.org/v3.16/manifests/calico.yaml
接下来将下载并安装 Calico 网络插件。
六、验证集群状态
要验证 Kubernetes 集群状态,在 Master 节点上运行以下命令:
kubectl get nodes
此命令应返回所有节点的名称和状态。如果所有节点都处于“Ready”状态,则集群已成功部署。
七、部署应用程序
现在,可以在 Kubernetes 集群上部署应用程序。首先,需要创建一个 Deployment,它将在集群中创建一个 Pod,其中包含应用程序容器。
以下是一个示例 Deployment YAML 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-app-image:latest
ports:
- containerPort: 80
请将此 YAML 文件保存到名为“my-app-deployment.yaml”的文件中,并使用以下命令将其部署到 Kubernetes 集群中:
kubectl apply -f my-app-deployment.yaml
此命令将在 Kubernetes 集群中创建一个名为“my-app”的 Deployment,并在其中运行 3 个 Pod。
要验证应用程序正在运行,请运行以下命令:
kubectl get pods
此命令应返回正在运行的 Pod 的名称和状态。如果您的应用程序正在运行,则应显示 3 个处于“Running”状态的 Pod。
八、创建 Service
现在,需要创建一个 Kubernetes Service,以便应用程序可以在集群外部访问。
以下是一个示例 Service YAML 文件:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- name: http
port: 80
targetPort: 80
type: LoadBalancer
请将此 YAML 文件保存到名为“my-app-service.yaml”的文件中,并使用以下命令将其部署到 Kubernetes 集群中:
kubectl apply -f my-app-service.yaml
此命令将创建一个名为“my-app-service”的 Kubernetes Service,它将路由流量到名为“my-app”的 Deployment 中运行的 Pod。
九、访问应用程序
现在,可以使用公共 IP 地址或域名访问您的应用程序。要查找 Kubernetes Service 的公共 IP 地址,请运行以下命令:
kubectl get services
此命令将返回正在运行的 Service 的名称、类型、端口和公共 IP 地址。
现在,可以使用公共 IP 地址或域名访问您的应用程序。如果使用的是 LoadBalancer 类型的 Service,则可以在 Web 浏览器中输入该 IP 地址(或域名)来访问应用程序。如果应用程序正常运行,则应该看到应用程序的欢迎页面。
十、清理
如果已经完成了对 Kubernetes 集群的测试并希望清理集群,可以运行以下命令来删除 Kubernetes 资源:
kubectl delete deployment my-app
kubectl delete service my-app-service
kubeadm reset
此命令将删除名为“my-app”的 Deployment 和名为“my-app-service”的 Service,并将重置 Master 节点上的 Kubernetes 环境。
注意:这些命令将删除所有在集群中运行的 Pod、Deployment 和 Service。请谨慎操作,以免意外删除生产应用程序。
博主,请问 两台公网固定IP服务器 一台动态公网IP 这种需要怎么配置calico?