zoukankan      html  css  js  c++  java
  • 制作可以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

  • 相关阅读:
    MCU 51-4 独立按键&编码按键
    MCU 51-3定时器
    MCU 51-2 LED and Digital tube Test
    MCU 51-1概述
    STM32的启动方式
    Java蓝桥杯——排序练习:选美大赛
    蓝桥杯——剪邮票(2016JavaB组第10题)
    蓝桥杯——压缩变换(2016JavaB组第9题)
    蓝桥杯——Java集合练习题
    蓝桥杯——螺旋折线(2018JavaB组第7题19分)
  • 原文地址:https://www.cnblogs.com/zhaobowen/p/13279089.html
Copyright © 2011-2022 走看看