之前我们下载的最小化的版本,根据我们的需求,需要安装各种软件,然后定制成我们想要的最小化版本.
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 /]#