Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它由Google设计,并捐赠给了Cloud Native Computing Foundation(CNCF)来维护。Kubernetes已经成为容器编排的事实标准,广泛应用于云计算和DevOps领域。
Kubernetes基础概念
1. 容器
容器是一种轻量级、可移植的计算单位,它打包了应用程序及其所有依赖项,可以在任何支持Docker的环境中运行。
2. Pod
Pod是Kubernetes中的最小部署单元,它包含一个或多个容器,以及共享的存储和网络资源。
3. 服务
服务定义了一组Pod的访问方式,它为Pod提供了一个稳定的网络标识和访问入口。
4. 命名空间
命名空间用于将集群资源隔离,不同的命名空间可以拥有不同的资源,便于管理和权限控制。
5. 资源配额
资源配额用于限制命名空间中资源的最大使用量,例如CPU、内存等。
Kubernetes安装
1. 环境准备
- 安装Docker
- 安装kubeadm、kubelet和kubectl
# 安装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 <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
2. 初始化Master节点
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
3. 加入Worker节点
sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Kubernetes实战
1. 部署Nginx服务
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
kubectl apply -f nginx-pod.yaml
2. 创建服务
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl apply -f nginx-service.yaml
3. 暴露服务
kubectl expose service nginx-service --type=NodePort
4. 部署Nginx Ingress Controller
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory/ingress-nginx-deployment.yaml
5. 配置域名解析
将域名解析到Master节点的IP地址。
6. 访问Nginx服务
在浏览器中输入域名,即可访问Nginx服务。
学习资源
以下是一些Kubernetes学习资源:
- Kubernetes官方文档:https://kubernetes.io/zh/docs/
- Kubernetes官方教程:https://kubernetes.io/zh/docs/tutorials/
- Kubernetes中文社区:https://kubernetes.cn/
- Kubernetes官方GitHub仓库:https://github.com/kubernetes
通过以上指南,相信你已经对Kubernetes有了初步的了解。接下来,你可以根据自己的需求,进一步学习Kubernetes的高级特性和最佳实践。祝你学习愉快!
