制作可以ssh的镜像发布到k8s
Posted zhaobowen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了制作可以ssh的镜像发布到k8s相关的知识,希望对你有一定的参考价值。
制作可以ssh的镜像发布到k8s
一、制作可以ssh的镜像
1、下载镜像
docker pull centos:7
2、基于centos镜像,创建一个名为centos7ssh的容器
docker run -i -t -p 1022:22 -p 30080:80 --name sshchen centos:7 /bin/bash
3、进入容器后,升级并安装ssh服务端和客户端,服务端能让其他主机远程登录本机,客户端能让本机远程登录其他主机
yum -y update
yum install passwd openssl openssh-server vim openssh-clients -y
5、创建 /var/run/sshd/目录,要不然sshd服务启动会报错
mkdir -p /var/run/sshd
6、编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no
修改后在启动sshd的时候可能报一个redhat版本不适用的错误,不影响使用。
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
7、修改允许root登陆
PermitRootLogin yes
8、创建公私密钥,输入命令后,直接按两次enter键确认就行了
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
9、开启ssh服务
编写启动脚本,方便从镜像启动
‘‘‘
注意很多文档上创建run.sh在根目录,实际测试启动容器
docker run -p 1022:22 -p 30080:80 -d centos7-ssh:latest /run.sh未知原因报错
starting container process caused "exec: "/run.sh": stat /run.sh: no such file or directory".
vim /root/run.sh
#!/bin/bash
/usr/sbin/sshd -D
chmod 755 /sshd.sh
修改root密码
echo "111111" | passwd --stdin "root"
10、测试
在从容器中执行ssh localhost
在宿主机执行ssh 宿主IP -p1022
注意是小P
测试成功。。。。
11、退出容器、提交新的镜像
docker ps -a |grep sshchen
docker commit dockerid centos7-ssh
12、用新的镜像启动容器并测试
docker run -t -i -p 1022:22 -p 30080:80 centos7-ssh:latest /bin/bash
docker run --restart=always -p 1022:22 -p 30080:80 -d centos7-ssh:latest /root/run.sh
13、打包镜像方便迁移到k8s或dockerhub
docker save centos7-ssh:4 -o centos7-ssh.4.tar
:4 本应该是latest,这里是因为我多次修改镜像保存的时候新设的版本
二、在k8s中发布
登陆k8s某节点,将镜像文件恢复到节点的docker上
docker load < /root/centos7-ssh.4.tar 绝对路径
docker tag 镜像id 镜像名字:镜像版本
使用dockerfile来修改镜像,因为需要启动容器启动ssh
mkdir dockerfile
touch Dockerfile
写入以下内容
#base image
FROM centos7-ssh:4
MAINTAINER zhaobw “zhaobowen@ict.ac.cn”
#add execute privilege
RUN yum install -y lsof
RUN echo "111111" | passwd --stdin "root"
RUN mkdir /root/data
EXPOSE 22
#start tomcat
ENTRYPOINT /root/run.sh
开始构建容器
cd dockerfile
docker build -t="centos7-ssh:8.0" .
在k8s集群中创建pod 选择镜像名 选择主机仅本机这里就是k8s节点
我用的rancher,选择镜像,选择映射端口就好啦。。
实例:
在10.60.1.93上创建一个可ssh的docker
docker run --restart=always -p 1022:22 -p 30080:80 -v /tmp/data:/root/data -d centos7-ssh:8.0 /root/run.sh
在宿主机执行ssh 宿主IP -p1022
以上是关于制作可以ssh的镜像发布到k8s的主要内容,如果未能解决你的问题,请参考以下文章