Kubernetes,简称K8s,是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它由Google开发,并在2014年捐赠给了Cloud Native Computing Foundation(CNCF)。Kubernetes已经成为容器编排领域的领导者,被广泛应用于云原生应用的开发和部署。
本文将带您从Kubernetes的入门知识开始,逐步深入到部署应用的详细步骤,帮助您轻松上手Kubernetes。
一、Kubernetes入门
1.1 什么是Kubernetes?
Kubernetes是一个用于容器编排的平台,它可以帮助您自动化容器的部署、扩展和管理。它允许您以声明性的方式定义应用程序的配置,并自动处理容器的创建、调度、扩展和故障转移。
1.2 Kubernetes的核心概念
- Pod:Kubernetes的最小部署单元,一组关联的容器。
- Node:运行Pod的物理或虚拟机。
- Master:Kubernetes集群中的控制节点,负责集群的管理和维护。
- ReplicaSet:确保指定数量的Pod副本始终运行。
- Deployment:Kubernetes的高级部署对象,用于管理Pod和ReplicaSet。
- Service:定义Pod的网络访问方式,为Pod提供稳定的网络标识。
二、安装Kubernetes
2.1 环境准备
- 一台或多台虚拟机或物理机。
- 操作系统:Linux(推荐CentOS 7)。
- 网络配置:确保虚拟机或物理机之间可以相互通信。
2.2 安装Docker
Kubernetes依赖于Docker进行容器化,因此首先需要安装Docker。
# 安装Docker
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并使Docker服务开机自启
sudo systemctl start docker
sudo systemctl enable docker
2.3 安装Kubeadm、Kubelet和Kubectl
# 安装kubeadm、kubelet和kubectl
sudo yum install -y kubeadm kubelet kubectl
# 启动并使kubelet服务开机自启
sudo systemctl start kubelet
sudo systemctl enable kubelet
2.4 初始化Master节点
# 初始化Master节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
2.5 配置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
2.6 安装Pod网络插件
# 安装Flannel网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
三、部署应用
3.1 创建Deployment
# 创建一个名为nginx-deployment.yaml的文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.8
ports:
- containerPort: 80
3.2 创建Service
# 创建一个名为nginx-service.yaml的文件
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
3.3 应用配置
# 应用Deployment和Service配置
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
3.4 查看应用状态
# 查看Deployment状态
kubectl get deployments
# 查看Pod状态
kubectl get pods
# 查看Service状态
kubectl get services
3.5 访问应用
# 访问应用
kubectl get nodes
# 访问NodePort
nodeIP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[0].address}')
curl $nodeIP:31234
四、总结
通过以上步骤,您已经成功入门Kubernetes,并掌握了部署应用的基本技能。Kubernetes是一个非常强大的工具,可以帮助您轻松地管理容器化应用程序。随着您对Kubernetes的深入了解,您将能够构建更加复杂和高级的应用程序。祝您在Kubernetes的世界里探索愉快!