k8s使用harbor创建POD

k8s使用harbor创建POD

1、环境准备

1.1安装harborv2.1.0

1.2安装k8sv1.2

1.3部署flannel-v0.10.0网络空间

1.4下载pod-infrastructure:latest镜像到镜像仓库(必须)

2、yaml文件说明

例如:创建一个node-export.yaml

vi node-export.yaml
apiVersion: apps/v1	#指定api版本,此值必须在kubectl apiversion中
kind: DaemonSet	#指定创建资源的角色/类型
metadata:	#资源的元数据/属性
  name: node-exporter	#资源的名字,在同一个namespace中必须唯一 
  namespace: prom-grafana	#比如创建的有该名称的namespace
  labels:	#设定资源的标签
    name: node-exporter
spec:	#指定该资源的内容
  selector:
    matchLabels:
     name: node-exporter
  template:
    metadata:
      labels:
        name: node-exporter
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      containers:	#容器设置
      - name: node-exporter
        image: prom/node-exporter:v0.16.0	#镜像名称(可以改变成内网,但比如加认证内容)
        imagePullPolicy: Never	#拉取策略,从本地拉取
        ports:
        - containerPort: 9100
        resources:
          requests:
            cpu: 0.15
        securityContext:
          privileged: true
        args:
        - --path.procfs
        - /host/proc
        - --path.sysfs
        - /host/sys
        - --collector.filesystem.ignored-mount-points
        - '"^/(sys|proc|dev|host|etc)($|/)"'
        volumeMounts:
        - name: dev
          mountPath: /host/dev
        - name: proc
          mountPath: /host/proc
        - name: sys
          mountPath: /host/sys
        - name: rootfs
          mountPath: /rootfs
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /

3、创建步骤

3.1修改node机器kubernetes的kubelet配置文件

KUBELET_OPTS="--logtostderr=true \
--v=4 \
--hostname-override=10.25.247.145 \
--kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
--bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
--config=/opt/kubernetes/cfg/kubelet.config \
--cert-dir=/opt/kubernetes/ssl \
#下列内容为每个POD创建是都会拉取的POD镜像,此环境无外网
--pod-infra-container-image=10.25.193.138/teamco/pod-infrastructure:latest"

3.2生效配置文件

#执行命令
systemctl daemon-reload
systemctl restart kubelet

3.3本地镜像创建

#沿用上面node-export.yaml
#注意:
image: prom/node-exporter:v0.16.0	#该镜像本地必须下载的有
imagePullPolicy: Never	#该策略为只从本地下载

3.4镜像仓库拉取创建

3.4.1创建namespace资源对象prom-grafana

vi prom-grafana-namespaces.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: prom-grafana
  labels:
   name: prom-grafana
#命令执行
kubectl create -f  prom-grafana-namespaces.yaml
namespace/prom-grafana created

3.4.2创建sa账户

#命令
kubectl create serviceaccount drifter -n prom-grafana
serviceaccount/drifter created

把sa 账号drifter通过clusterrolebing绑定到clusterrole上

kubectl create clusterrolebinding drifter-clusterrolebinding -n prom-grafana --clusterrole=cluster-admin  --serviceaccount=prom-grafana:drifter
clusterrolebinding.rbac.authorization.k8s.io/drifter-clusterrolebinding created

3.4.3创建数据目录

#每个node节点都需要执行
mkdir /data
chmod 777 /data/

3.4.4创建imagePullSecrets对象

3.4.4.1登陆内网harbor

docker login 10.25.193.138

在这里插入图片描述

3.4.4.2查看登陆harbor的凭据

cat ~/.docker/config.json |base64 -w 0

在这里插入图片描述

3.4.4.3修改已经创建的namespace资源对象prom-grafana

apiVersion: v1
kind: Namespace
metadata:
  name: prom-grafana
  labels:
   name: prom-grafana
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSIxMC4yNS4xOTMuMTM4IjogewoJCQkiYXV0aCI6ICJaR2hzYVhWck9rRmtiV2x1TVRJeiIKCQl9Cgl9LAoJIkh0dHBIZWFkZXJzIjogewoJCSJVc2VyLUFnZW50IjogIkRvY2tlci1DbGllbnQvMTkuMDMuOCAobGludXgpIgoJfQp9
type: kubernetes.io/dockerconfigjson
#执行命令
kubectl delete -f  prom-grafana-namespaces.yaml
kubectl create -f  prom-grafana-namespaces.yaml

3.4.6安装node-exporter

vi node-export.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: prom-grafana
  labels:
    name: node-exporter
spec:
  selector:
    matchLabels:
     name: node-exporter
  template:
    metadata:
      labels:
        name: node-exporter
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      imagePullSecrets:
      - name:prom-grafana
      containers:
      - name: node-exporter
        image: 10.25.193.138/teamco/node-exporter:v0.16.0
        ports:
        - containerPort: 9100
        resources:
          requests:
            cpu: 0.15
        securityContext:
          privileged: true
        args:
        - --path.procfs
        - /host/proc
        - --path.sysfs
        - /host/sys
        - --collector.filesystem.ignored-mount-points
        - '"^/(sys|proc|dev|host|etc)($|/)"'
        volumeMounts:
        - name: dev
          mountPath: /host/dev
        - name: proc
          mountPath: /host/proc
        - name: sys
          mountPath: /host/sys
        - name: rootfs
          mountPath: /rootfs
      tolerations:
      - key: "node-role.kubernetes.io/master"
        operator: "Exists"
        effect: "NoSchedule"
      volumes:
        - name: proc
          hostPath:
            path: /proc
        - name: dev
          hostPath:
            path: /dev
        - name: sys
          hostPath:
            path: /sys
        - name: rootfs
          hostPath:
            path: /
#创建
kubectl create -f node-export.yaml
       path: /proc
    - name: dev
      hostPath:
        path: /dev
    - name: sys
      hostPath:
        path: /sys
    - name: rootfs
      hostPath:
        path: /

#创建
kubectl create -f node-export.yaml


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值