Kubernetes,简称K8s,是一个开源的容器编排平台,用于自动化计算机容器化应用程序的部署、扩展和管理。它由Google设计,并捐赠给了Cloud Native Computing Foundation进行维护。Kubernetes已经成为容器编排领域的领导者,被广泛应用于云原生应用的开发和部署。
本文将带你从入门到实战,全面了解Kubernetes,并提供一站式安装指南,帮助你轻松上手。
Kubernetes简介
什么是Kubernetes?
Kubernetes是一个用于自动化容器操作的系统,它允许你以声明性的方式定义、部署和管理容器化应用程序。它简化了容器化应用程序的部署、扩展和管理,使得容器化应用程序可以在任何环境中运行,包括物理机、虚拟机、云平台等。
Kubernetes的特点
- 自动化部署和回滚:Kubernetes可以自动化容器的部署和回滚,确保应用程序的稳定运行。
- 服务发现和负载均衡:Kubernetes可以帮助容器查找其他容器,实现服务发现和负载均衡。
- 存储编排:Kubernetes可以自动挂载存储系统,为容器提供持久化存储。
- 自动装箱:Kubernetes可以根据资源需求自动分配容器到节点上。
- 自我修复:Kubernetes可以自动检测并修复容器故障。
Kubernetes入门
环境准备
在开始安装Kubernetes之前,你需要准备以下环境:
- 操作系统:推荐使用CentOS 7或Ubuntu 16.04。
- Docker:Kubernetes依赖于Docker,因此需要先安装Docker。
- kubeadm、kubelet和kubectl:这三个工具用于安装和配置Kubernetes集群。
安装Kubernetes
以下以CentOS 7为例,介绍如何安装Kubernetes集群。
- 安装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
sudo systemctl start docker
sudo systemctl enable docker
- 安装kubeadm、kubelet和kubectl:
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-kubic
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/keys.txt
EOF
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubelet
sudo systemctl start kubelet
sudo systemctl enable kubelet
- 初始化Master节点:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,你会得到一个命令,用于将节点加入集群:
kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
- 安装Pod网络插件:
以Flannel为例,安装Flannel网络插件:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 配置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
- 验证集群状态:
kubectl get nodes
如果输出显示所有节点都处于Ready状态,说明集群安装成功。
Kubernetes实战
部署一个简单的应用程序
以下以部署一个Nginx应用程序为例,介绍如何在Kubernetes中部署应用程序。
- 创建Nginx部署文件:
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:latest
ports:
- containerPort: 80
- 应用部署文件:
kubectl apply -f nginx-deployment.yaml
- 查看部署状态:
kubectl get pods
如果输出显示所有Pod都处于Running状态,说明Nginx应用程序部署成功。
扩展应用程序
你可以通过修改Deployment文件中的replicas字段来扩展应用程序的副本数量。
暂停和删除应用程序
你可以使用以下命令来暂停和删除应用程序:
kubectl scale deployment nginx-deployment --replicas=1
kubectl delete deployment nginx-deployment
总结
本文介绍了Kubernetes的基本概念、安装步骤和实战应用。通过本文的学习,相信你已经对Kubernetes有了初步的了解。在实际应用中,Kubernetes的功能远不止这些,还需要深入学习其高级特性和最佳实践。希望本文能帮助你轻松上手Kubernetes,开启你的云原生之旅。