根据实践学习K8S---3.定制系统镜像

之前我们下载的最小化的版本,根据我们的需求,需要安装各种软件,然后定制成我们想要的最小化版本.

1.需要对镜像挂载一个ISO,来配置yum源.

上传一个ISO完整镜像到K8S节点.挂载到目录

[root@node-2 mxadmin]# mount -o loop CentOS-7.4-x86_64-DVD-1708.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only

2.编辑yaml文件,将文件目录挂载到pod上,另外只有node-2有iso,所以需要将pod固定到node-02上

给node-2打上标签

[root@node-1 pod]# kubectl label nodes node-2 path=iso
node/node-2 labeled

修改配置文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: centos
  labels:
    app: centos
spec:
  replicas: 1
  selector:
    matchLabels:
      app: centos
  template:
    metadata:
      labels:
        app: centos
    spec:
      containers:
      - name: centos
        image: centos:centos7.4.1708
        command: [ "/bin/bash", "-c", "--" ]
        args: [ "while true; do sleep 30; done;" ]
        #挂载名为iso的路径到pod的/mnt下
        volumeMounts:
        - name: iso
          mountPath: /media/cdrom
      #创建一个物理卷,路径为节点的路径
      volumes:
      - name: iso
        hostPath:
          path: /mnt
      #选择pod部署的节点位置位path:iso的标签的节点
      nodeSelector:
        path: iso

更新

[root@node-1 pod]# kubectl apply -f centos_deployment.yaml 
deployment.apps/centos configured
[root@node-1 pod]# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE     IP             NODE     NOMINATED NODE   READINESS GATES
centos-6b65cb9985-8wlsm   1/1     Running   0          2m53s   192.168.1.30   node-2   <none>           <none>
[root@node-1 pod]# kubectl exec -it centos-6b65cb9985-8wlsm /bin/bash
[root@centos-6b65cb9985-8wlsm /]# ls /m
media/ mnt/   
[root@centos-6b65cb9985-8wlsm /]# ls /mnt/
CentOS-7.4-x86_64-DVD-1708.iso
[root@centos-6b65cb9985-8wlsm /]# 

进入pod,配置yum源:

[root@centos-5d4df98d6-bxltr yum.repos.d]# cat CentOS-Media.repo 
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media/cdrom/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@centos-5d4df98d6-bxltr yum.repos.d]# 

安装常用的网络工具:

[root@centos-5d4df98d6-bxltr yum.repos.d]# yum install net-tools
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.22.20131004git.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================================================================================================
 Package                                     Arch                                     Version                                                       Repository                                  Size
=====================================================================================================================================================================================================
Installing:
 net-tools                                   x86_64                                   2.0-0.22.20131004git.el7                                      c7-media                                   305 k

Transaction Summary
=====================================================================================================================================================================================================
Install  1 Package

Total download size: 305 k
Installed size: 917 k
Is this ok [y/d/N]: y
Downloading packages:
warning: /media/cdrom/Packages/net-tools-2.0-0.22.20131004git.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for net-tools-2.0-0.22.20131004git.el7.x86_64.rpm is not installed
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-4.1708.el7.centos.x86_64 (@CentOS)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : net-tools-2.0-0.22.20131004git.el7.x86_64                                                                                                                                         1/1 
  Verifying  : net-tools-2.0-0.22.20131004git.el7.x86_64                                                                                                                                         1/1 

Installed:
  net-tools.x86_64 0:2.0-0.22.20131004git.el7                                                                                                                                                        

Complete!
[root@centos-5d4df98d6-bxltr yum.repos.d]# 

现在就可以使用ifconfig route等命令了:

[root@centos-5d4df98d6-bxltr yum.repos.d]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.1.32  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 62:fc:7f:e3:61:07  txqueuelen 0  (Ethernet)
        RX packets 11  bytes 774 (774.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10  bytes 836 (836.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos-5d4df98d6-bxltr yum.repos.d]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
10.244.0.0      192.168.1.1     255.255.0.0     UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
[root@centos-5d4df98d6-bxltr yum.repos.d]# 

保存修改:
在pod所在的节点通过docker找到相应的容器

[root@node-2 mxadmin]# docker ps -a
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                    PORTS               NAMES
a2fbda092908        centos                                              "/bin/bash -c -- 'wh鈥   25 minutes ago      Up 25 minutes                                 k8s_centos_centos-5d4df98d6-bxltr_default_bd304fd1-8019-484b-86c0-9fb2eab97117_0

查看改变

[root@node-2 mxadmin]# docker diff a2fbda092908
C /run
A /run/secrets
A /run/secrets/kubernetes.io
A /run/secrets/kubernetes.io/serviceaccount

提交修改,并生成新的镜像

[root@node-2 mxadmin]# docker commit --author "dingyz" --message "centos7.4 has net-tools" a2fbda092908 centos:centos7.4.1708.net-tools
sha256:22872cc86f9c31d2c98c73b78f37edc3d912a3fee7bc52493aec527ba2d9d8dc
[root@node-2 mxadmin]# docker images
REPOSITORY                                            TAG                        IMAGE ID            CREATED             SIZE
centos                                                centos7.4.1708.net-tools   22872cc86f9c        11 seconds ago      236MB
centos                                                latest                     470671670cac        4 days ago          237MB
nginx                                                 latest                     c7460dfcab50        12 days ago         126MB
mysql                                                 5.7                        db39680b63ac        3 weeks ago         437MB
mysql                                                 latest                     ed1ffcb5eff3        3 weeks ago         456MB
registry.aliyuncs.com/google_containers/kube-proxy    v1.16.0                    c21b0c7400f9        4 months ago        86.1MB
registry.aliyuncs.com/google_containers/coredns       1.6.2                      bf261d157914        5 months ago        44.1MB
centos                                                centos7.4.1708             9f266d35e02c        10 months ago       197MB
registry.cn-hangzhou.aliyuncs.com/dingyz/centos       7.4.base                   9f266d35e02c        10 months ago       197MB
registry.cn-hangzhou.aliyuncs.com/userdefine/centos   7.4.base                   9f266d35e02c        10 months ago       197MB
quay-mirror.qiniu.com/coreos/flannel                  v0.11.0-amd64              ff281650a721        11 months ago       52.6MB
registry.aliyuncs.com/google_containers/pause         3.1                        da86e6ba6ca1        2 years ago         742kB
kubeguide/tomcat-app                                  v1                         a29e200a18e9        3 years ago         358MB
nginx                                                 1.7.9                      84581e99d807        4 years ago         91.7MB

修改配置文件

[root@node-1 pod]# vi centos_deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: centos
  labels:
    app: centos
spec:
  replicas: 1
  selector:
    matchLabels:
      app: centos
  template:
    metadata:
      labels:
        app: centos
    spec:
      containers:
      - name: centos
        image: centos:centos7.4.1708.net-tools
        #意思是不从公网拉取,因为镜像在本地,如果不配置,则会拉取失败
        imagePullPolicy: Never
        command: [ "/bin/bash", "-c", "--" ]
        args: [ "while true; do sleep 30; done;" ]
        volumeMounts:
        - name: iso
          mountPath: /media/cdrom
      volumes:
      - name: iso
        hostPath:
          path: /mnt
      nodeSelector:
        path: iso

更新

[root@node-1 pod]# kubectl apply -f centos_deployment.yaml 
deployment.apps/centos configured
[root@node-1 pod]# kubectl get pod
NAME                      READY   STATUS        RESTARTS   AGE
centos-748f67bd8c-5cvtw   0/1     Terminating   0          3m9s
centos-7c556897c8-pxj9b   1/1     Running       0          2s
centos-b5877595b-rg4r2    1/1     Terminating   0          4m39s
[root@node-1 pod]# kubectl get pod
NAME                      READY   STATUS        RESTARTS   AGE
centos-7c556897c8-pxj9b   1/1     Running       0          3s
centos-b5877595b-rg4r2    1/1     Terminating   0          4m40s
[root@node-1 pod]# kubectl get pod
NAME                      READY   STATUS        RESTARTS   AGE
centos-7c556897c8-pxj9b   1/1     Running       0          4s
centos-b5877595b-rg4r2    1/1     Terminating   0          4m41s
[root@node-1 pod]# 
[root@node-1 pod]# 
[root@node-1 pod]# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
centos-7c556897c8-pxj9b   1/1     Running   0          63s

测试

[root@node-1 pod]# kubectl exec -it centos-7c556897c8-pxj9b /bin/bash
[root@centos-7c556897c8-pxj9b /]# 
[root@centos-7c556897c8-pxj9b /]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.1.43  netmask 255.255.255.0  broadcast 0.0.0.0
        ether 16:7e:8a:79:78:00  txqueuelen 0  (Ethernet)
        RX packets 9  bytes 690 (690.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 42 (42.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos-7c556897c8-pxj9b /]# 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值