1 创建命名空间
首先查看一下当前的所有命名空间:
kubectl get namespace
使用yaml文件的方式生成一个名为test的命令空间,创建namespace-test.yaml文件,内容为:
apiVersion: v1
kind: Namespace
metadata:
name: test
执行如下命令kubectl apply -f namespace-test.yaml,创建这个namespace
再次查看namespace,就发现已经创建好了
2 创建pod
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: test
spec:
containers:
- image: nginx:latest
name: pod001
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
我这里定义的一个pod,名字为nginx,是在test这个namespace下的,然后容器用的是nginx:latest,执行
kubectl apply -f test-pod.yaml
此时执行命令:kubectl get all -n test
发现这个test这个明明空间下确实有一个名为nginx的pod
3 给pod加标签
先看上面的nginx的情况:
kubectl get all -n test -o wide --show-labels
可以知道这个pod上是没有任何标签的。执行如下命令:
kubectl label pod nginx love=coffee -n test
打上标签以后,然后再看一下:标签存在了
当然也是可以通过修改yaml文件的方式来实现的,如:
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: test
labels:
love: "tea"
spec:
containers:
- image: nginx:latest
name: pod001
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
执行完以后,可以看到变成了love=tea
4 创建deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep
namespace: test
spec:
replicas: 3
selector:
matchLabels:
run: nginx
template:
metadata:
labels:
run: nginx
spec:
containers:
- image: nginx:latest
name: nginx
ports:
- containerPort: 80
protocol: TCP
查看这个详情:
5 创建service
apiVersion: v1
kind: Service
metadata:
name: svc-nginx
namespace: test
spec:
clusterIP: 10.109.179.231 #固定svc的内网ip
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: ClusterIP
目的是代理到标签为run=nginx的所有pod。创建完成后,多了一个service
访问这个service的内网ip:能访问成功