1. K8s简介
Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它可以帮助开发者和运维人员更轻松地管理容器化应用程序的部署、扩展和运维。
2. K8s核心概念
2.1 容器
容器是一种轻量级、可移植的计算环境,它允许开发人员将应用程序及其依赖项打包在一起,然后在任何支持Docker的环境中运行。
2.2 Pod
Pod是K8s中最小的部署单元,它包含一个或多个容器以及共享的存储和网络资源。
2.3 Node
Node是K8s集群中的计算节点,每个节点都运行Kubernetes的守护进程(如Kubelet、Kube-Proxy等)。
2.4 Controller Manager
Controller Manager是Kubernetes集群中管理各种控制器的组件,如Deployment、ReplicaSet等。
2.5 Scheduler
Scheduler负责将Pod调度到合适的Node上。
3. K8s安装与配置
3.1 环境准备
在开始安装K8s之前,需要准备以下环境:
服务器:至少两台服务器,用于安装Master节点和Worker节点。
操作系统:支持K8s的Linux发行版,如CentOS、Ubuntu等。
Docker:用于运行容器。
3.2 安装K8s
以下是一个简单的K8s安装步骤:
在Master节点和Worker节点上安装Docker。
安装Kubeadm、Kubelet和Kubectl。
初始化Master节点。
将Worker节点加入集群。
# 安装Kubeadm
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add –
sudo cat <
3.3 配置Kubectl
在本地机器上配置Kubectl,以便与集群交互。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4. 部署应用
4.1 使用Deployment部署应用
Deployment是K8s中用于管理Pod副本集的控制器。
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
– name: myapp
image: nginx:latest
使用以下命令部署应用:
kubectl apply -f myapp-deployment.yaml
4.2 使用Service暴露应用
Service用于将Pod暴露给外部访问。
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
– protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
使用以下命令部署Service:
kubectl apply -f myapp-service.yaml
4.3 查看应用状态
kubectl get pods
kubectl get services
5. 实战案例
5.1 高可用部署
为了提高应用的可用性,可以使用多个Pod和Service。
修改Deployment的replicas值为3。
修改Service的type为LoadBalancer。
5.2 动静分离
动态分离是指将应用分为静态部分和动态部分,静态部分部署在Node上,动态部分通过Service暴露。
部署静态部分:将静态资源部署在Node上,如Nginx。
部署