一、前言
- Pod:k8s最小单元
- Service:pod每次动态创建后,自动分配的ip会不同,所以引入了service(即服务的注册与发现)
- namespace:命名空间,主要用于隔离
二、部署步骤
1、创建namespace
nginx-namespace.yaml
apiVersion: v1 #类型为Namespace
kind: Namespace #类型为Namespace
metadata:
name: ns-test #命名空间名称
labels:
name: label-test #pod标签
复制代码
执行
#创建
kubectl create -f nginx-namespace.yaml
#查询
kubectl get namespace
复制代码
2、创建pod
一般不直接create pod,而是通过controller来创建pod。deployment为其中一种controller
nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ns-test
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
复制代码
执行
#创建
kubectl create -f nginx-deployment.yaml
#查询
kubectl get deployment
#或
kubectl get pods -n ns-test
================================
$ kubectl create -f nginx-deployment.yaml
# nginx-deployment 部署的2个 pod 全部成功
$ kubectl get pods -o wide -n ns-test
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-54f57cf6bf-57g8l 1/1 Running 0 23m 10.244.1.10 shuifeng <none> <none>
nginx-deployment-54f57cf6bf-ltdf7 1/1 Running 0 23m 10.244.1.11 shuifeng <none> <none>
# READY 2/2 表明全部部署成功
$ kubectl get deploy nginx-deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 2/2 2 2 23m
#此时用自动生成的ip访问
#如 curl http://10.244.1.10
复制代码
3、创建service
vim nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
$ kubectl create -f nginx-service.yaml
$ kubectl get svc nginx-service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-service ClusterIP 10.108.9.49 <none> 80/TCP 11m app=nginx
curl http://10.108.9.49
复制代码
三、技术笔记
- 如果使用主机ip如果访问
kubectl get svc nginx-service -o wide查询到对应的主机应对的端口即可通过ip+此端口访问,或者修改nginx-service.yaml(注意增加了nodeport)
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 8000
复制代码
- kubectl create kubectl apply 区别
当yaml有修改,可以使用apply来使修改后的配置生效
- 这里是介绍命令行的方式,可以直接用dashboard用户界面来创建比较方便,当然yaml还是必需的
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END