目录
1. 概述
老话说的好:努力学习,努力提高,做一个有真才实学的人。
言归正传,之前我们聊了 如何使用国内的镜像源搭建 kubernetes(k8s)集群 ,今天我们来聊聊如何在 kubernetes(k8s)上部署容器。
官网教程:Kubernetes Documentation | Kubernetes
2. 部署 Pod
2.1 概述
Pod 是 kubernetes(k8s)的最小单元,一个 Pod 中可部署多个容器,这里我们以部署 Nginx 为例,先介绍一下 kubernetes(k8s)的编排脚本。
2.2 Pod 脚本例子
新建一个脚本,名为 my-pod.yml
# vi my-pod.yml
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
apiVersion:脚本的版本,Pod 通常使用 v1 这个版本
kind:脚本的类型,这里就是 Pod
metadata.name:Pod 的名称
spec.containers:Pod 中运行的容器,可以是多个
注意:下级相对上级缩进两个空格,而不是Tab。
2.3 执行脚本
# kubectl apply -f my-pod.yml
2.4 查看 pod 信息
# kubectl get pod -o wide
ContainerCreating 状态代表 pod 正在添加
Running 状态代表 pod 已经运行
2.5 查看 pod 详细信息
# kubectl describe pod my-nginx
2.6 删除 pod
# kubectl delete pod my-nginx
3. 部署 Deployment
3.1 概述
在 kubernetes(k8s)中, 使用 Pod 脚本部署 pod,只能单节点部署,无法高可用。
因此需要用到 Deployment ,Deployment 可以指定 Pod 的副本数,通常情况是使用 Deployment 部署。
3.2 Deployment 脚本例子
新建一个脚本,名为 my-deployment.yml
# vi my-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx-deployment
template:
metadata:
labels:
app: nginx-deployment
spec:
containers:
- name: my-nginx
image: nginx
spec.replicas:部署 Pod 的副本数
sepc.template.metadata.labels.app:deployment 标签名称。
3.3 执行脚本
# kubectl apply -f my-deployment.yml
3.4 查看 deployment 信息
# kubectl get deployment
# kubectl get pod -o wide
3.5 查看 deployment 详细信息
# kubectl describe deployment nginx-deployment
3.6 删除 deployment
# kubectl delete deployment nginx-deployment
4. 部署 Service
4.1 概述
上一步我们使用 deployment 部署了多个 Pod 实例,但我们无法访问到 Pod 中的 Nginx。
此时就要借助 Service。
4.2 Service 脚本例子
新建一个脚本,名为 my-service.yml
# vi my-service.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx-deployment
ports:
- protocol: TCP
nodePort: 30000
port: 20000
targetPort: 80
spec.type:Service 的类型,NodePort 是端口映射的方式,就是把容器的端口映射到宿主机的端口。
spec.selector.app:作用于哪个 deployment 标签。
spec.ports:是端口映射设置,targetPort 是容器中服务真实的端口,Nginx默认使用 80 端口,port 是Service 对外暴露的端口,用于 K8s 内部访问,nodePort 是映射的宿主机的端口。
4.3 执行脚本
# kubectl apply -f my-service.yml
4.4 查看 Service 信息
# kubectl get service -o wide
4.5 查看 Service 详细信息
# kubectl describe service nginx-service
4.6 删除 Service
# kubectl delete service nginx-service
4.7 访问 Nginx
地址:http://宿主机IP:30000
5. 综述
今天聊了一下 kubernetes(k8s)集群上是如何部署容器的,希望可以对大家的工作有所帮助。
欢迎帮忙点赞、评论、转发、加关注 :)
关注追风人聊Java,每天更新Java干货。
6. 个人公众号
追风人聊Java,欢迎大家关注