1、查看k8s进群状态
[root@k8s-master test]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 16d v1.15.1
k8s-node1 Ready <none> 16d v1.15.1
2、编写nginx服务yaml文件
kind: Namespace
apiVersion: v1
metadata:
name: myserver #创建namespace
---
kind: Deployment
apiVersion: apps/v1 #可查询它的api版本 kubectl explain deployment.apiVersion
metadata: #定义pod元数据信息,可查询它的下级子字段kubectl explain deployment.metadata
labels: #定义deployment控制器标签
app: nginx-deployment-label #标签名称以键值形式定义,可以定义多个,这里标签是app值为nginx-deployment-label
name: nginx-deployment #deployment资源的名字
namespace: myserver #deployment所属的namespace,默认是defaule
spec: #定义Deployment中容器的详细信息,可通过kubectl explain deployment.spec查询
replicas: 1 #定义创建出pod的副本数,默认值是1个pod
selector: #定义标签选择器,它跟上面的Deployment标签不是一回事,它是找下面template中定义的labels标签
matchLabels: #定义匹配的标签,必须要设置
app: nginx-selector #匹配的目标标签,控制器会拿这个标签匹配下面的pod
template: #定义模板,用来描述需要创建的pod作用
metadata: #定义模板元数据
labels: #这个labels会继承给这个yaml文件Deployment控制器创建的所有pod
app: nginx-selector #这个labels的key是app,值是nginx-selector,它会继承给下面的pod,和上面matchLabels.app: nginx-selector一样
spec: #定义pod的详细信息
containers: #定义pod中容器列表,可以定义多个pod
- name: nginx-container #容器名称
image: nginx:1.20 #容器镜像
imagePullPolicy: Always #镜像拉取策略
ports: #定义容器端口列表
- containerPort: 80 #定义一个端口
protocol: TCP #定义协议
name: http #端口名称
- containerPort: 443
protocol: TCP
name: https
env: #给容器传递环境变量
- name: "password" #变量名称,必须引号引起来
value: "123" #上面变量的值
- name: "age"
value: "18"
---
kind: Service
apiVersion: v1
metadata:
name: nginx-service
labels:
app: nginx-service-label #service资源的标签
namespace: myserver #所在的命名空间,与上面控制器必须在同一个命名空间
spec:
type: NodePort #service类型是NodePort
ports: #定义访问端口,一个service可以定义多个端口的映射关系
- name: http #定义协议名称
port: 80 #定义service端口,它可以和pod,node端口都不同,它是K8S中一个独立子网
protocol: TCP #定义类型
targetPort: 80 #目标pod端口,当访问宿主机30004端口时就会转达到pod的80端口
nodePort: 30004 #手动指定node节点暴露的端口,如果没有指定端口,那service会随机分配一个端口
- name: https
port: 443
protocol: TCP
targetPort: 443
nodePort: 30443
selector:
app: nginx-selector #这个标签就是上面pod的标签,service通过这个标签来匹配对应的pod
3、运行nginx服务yaml文件
kubectl apply -f nginx.yaml
4、查看namespace信息
[root@k8s-master ~]# kubectl get ns | grep myserver
myserver Active 49m
5、查看service信息
[root@k8s-master ~]# kubectl get svc -A | grep nginx
myserver nginx-service NodePort 10.106.253.198 <none> 80:30004/TCP,443:30443/TCP 50m
6、查看pod信息`在这里插入代码片
[root@k8s-master ~]# kubectl get pod -A | grep nginx
myserver nginx-deployment-68f5647649-bhbhq 1/1 Running 0 50m
7、访问nginx服务
粉丝福利