创建secret |
前提需要在私有Harbor上创建一个用户,此用户可以用来登录,并把harbor中的某些项目授予此用户的【项目管理员 】或【项目维护人员】或【开发人员】权限。验证从私有Harbor上拉取镜像创建pod用于验证kubernetes集群。
【创建secret】
如果Harbor里的镜像为私有镜像,那是不能直接pull镜像的,需要配置secret。如果是公有镜像,可以直接从Harbor里pull镜像。
在k8s管理节点上创建一个secret,
kubectl create secret docker-registry myharbor-yyee --docker-server=192.168.0.101:10080 --docker-username=yyee --docker-password=Harbor12345 --docker-email=87643666@qq.com
kubectl create secret docker-registry <注册secret名> --docker-server=<harbor服务器地址> --docker-username=<harbor用户名> --docker-password=<登录密码> --docker-email=<注册邮箱>
创建单个pod |
使用yaml文件创建单个pod 。
【创建pod配置文件】
在其中一个【k8s管理节点】上创建pod启动文件
vi /opt/kubernetes/server/startup/demo1.mvcone-pod.yaml
apiVersion: v1 kind: Pod metadata: name: demo1-mvcone spec: containers: - name: my-demo1-mvcone image: 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1 ports: - containerPort: 50002 imagePullSecrets: - name: myharbor-yyee
--containerPort 容器端口
imagePullSecrets 节点下的myharbor-yyee名称就是指定harbor的安全访问配置名称。
如果harbor里的镜像是public类型,则不需要配置imagePullSecrets ,可以直接pull私有harbor中的镜像。
【创建pod】
kubectl create -f /opt/kubernetes/server/startup/demo1.mvcone-pod.yaml
pod/demo1-mvcone created
【查看创建的pod】
kubectl get pods -o wide
使用yaml文件创建Deployment |
使用yaml文件创建Deployment
【创建deployment配置文件】
在其中一个【k8s管理节点】上创建Deployment配置文件
vi /opt/kubernetes/server/startup/demo1.mvcone-deploy.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: demo1-mvcone labels: app: demo1-mvcone spec: replicas: 3 selector: matchLabels: app: demo1-mvcone template: metadata: labels: app: demo1-mvcone spec: imagePullSecrets: - name: myharbor-yyee containers: - name: demo1-mvcone image: 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1 imagePullPolicy: Always ports: - containerPort: 50003
containerPort: 容器端口
imagePullSecrets 节点下的myharbor-yyee名称就是指定harbor的安全访问配置名称。
如果harbor里的镜像是public类型,则不需要配置imagePullSecrets ,可以直接pull私有harbor中的镜像。
selector 通过pod的名称选择pod
【创建Deployment】
kubectl create -f /opt/kubernetes/server/startup/demo1.mvcone-deploy.yaml
deployment.apps/demo1-mvcone created
【查看Deployment】
kubectl get deployment -o wide
【查看创建的pod】
kubectl get pod -o wide
使用yaml文件创建service |
只有 deploymente 才可以被创建成service 。
service配置文件
vi /opt/kubernetes/server/startup/demo1.mvcone-svc.yaml
apiVersion: v1 kind: Service metadata: name: demo1-mvcone-service namespace: default labels: name: demo1-mvcone-service spec: type: NodePort selector: app: demo1-mvcone ports: - port: 20002 targetPort: 50002 nodePort: 20002 protocol: TCP
port: 服务对外端口,不能跟targetPort重复。
targetPort:容器端口
nodePort: 服务内部端口。
selector 通过pod的名称选择pod
创建服务
kubectl create -f /opt/kubernetes/server/startup/demo1.mvcone-svc.yaml
service/demo1-mvcone-service created
查看服务
使用yaml文件创建DaemonSet |
使用yaml文件创建DaemonSet
【创建DaemonSet配置文件】
在其中一个【k8s管理节点】上创建Daemonset配置文件
vi /opt/kubernetes/server/startup/demo1.mvcone-daemonset.yaml
apiVersion: apps/v1 kind: DaemonSet metadata: name: demo1-mvcone labels: app: demo1-mvcone spec: selector: matchLabels: app: demo1-mvcone template: metadata: labels: app: demo1-mvcone spec: imagePullSecrets: - name: myharbor-yyee containers: - name: demo1-mvcone image: 192.168.0.101:10080/eshop/demo1.mvcone:v1.0.1 imagePullPolicy: Always ports: - containerPort: 50002
imagePullSecrets 节点下的myharbor-yyee名称就是指定harbor的安全访问配置名称。
如果harbor里的镜像是public类型,则不需要配置imagePullSecrets ,可以直接pull私有harbor中的镜像。
【创建DaemonSet】
kubectl create -f /opt/kubernetes/server/startup/demo1.mvcone-daemonset.yaml
daemonset.apps/demo1-mvcone created
【查看DaemonSet】
kubectl get daemonset -o wide
【查看创建的pod】
kubectl get pod -o wide
Pod,DaemonSet,Deployment对比 |
【Pod,DaemonSet,Deployment对比:】
Pod每次只能给一个工作节点创建一个Pod实例。
DaemonSet一次性给每个工作节点创建一个Pod实例,不能扩容,3个工作节点总共创建3个Pod。
Deployment可以创建多个Pod实,不受工作节点限制,将Pod均衡的分配到每个工作节点, Pod实例可以多于也可以小于工作节点的个数,方便扩缩容。
kubectl pod管理命令 |
【用yaml文件创建Pod|Daemonset|Deployment】 kubectl create -f xxx.yaml
【查看pod】:kubectl get pod demo1-mvcone
【查看DaemonSet】:kubectl get daemonset demo1-mvcone
【查看Deployment】:kubectl get deployment demo1-mvcone
【删除Pod】:kubectl delete pod demo1-mvcone
【删除DaemonSet】: kubectl delete daemonset demo1-mvcone
【删除Deployment】: kubectl delete deployment demo1-mvcone