coreos 探索之旅 一

准备分三个文章写关于coreos

一、安装,
二、配置,
三、kubernetes

  偏向实际操作碰到的一些问题和处理过程。

  coreos网上说的已经很多了,对我来说是因为据说它是轻量级,又是提供了容器内部署应用所需要的基础功能环境以及一系列用于服务发现和配置共享的内建工具,又是自动化又能规模化,一切美好尽在眼前,so,试试吧!

  为了尽可能对别人有所帮助先说一下我的基本环境,

1, 宿主机是centos 3.10.0-957.12.1.el7.x86_64
2, 在主机上安装kvm,利用kvm安装coreos
3, 下载的coreos版本是2303.3.0
http://coreos.com/releases/  下载
coreos_production_iso_image.iso
coreos_production_image.bin.bz2
一、创建磁盘
qemu-img create -f qcow2 /opt/kvmdisk/core1.img 5G
一、定义一个kvm安装配置文件
#文件名 coreos.xml
<domain type='kvm'>
        <name>coreos1</name>
        <memory>2048576</memory>
        <currentMemory>2048576</currentMemory>
        <vcpu>2</vcpu>
        <os>
          <type arch='x86_64' machine='pc'>hvm</type>
          <boot dev='cdrom'/>
         <!-- <boot dev='hd'/>  -->
       </os>
       <features>
         <acpi/>
         <apic/>
         <pae/>
       </features>
       <clock offset='localtime'/>
       <on_poweroff>destroy</on_poweroff>
       <on_reboot>restart</on_reboot>
       <on_crash>destroy</on_crash>
       <devices>
         <emulator>/usr/libexec/qemu-kvm</emulator>
         <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
           <source file='/opt/kvmdisk/core1.img'/>
           <target dev='hda' bus='ide'/>
         </disk>
         <disk type='file' device='cdrom'>
           <source file='/opt/os/coreos_production_iso_image.iso'/>
           <!--  镜像位置  -->
           <target dev='hdb' bus='ide'/>
         </disk>
        <interface type='bridge'>
          <source bridge='virbr0'/>
                <!--  注意别搞准自己的bridge  -->
          <mac address="00:16:3e:5d:aa:a8"/>
        </interface>
         <input type='mouse' bus='ps2'/>
         <graphics type='vnc' port='5901' autoport='no' listen = '0.0.0.0' keymap='en-us'/>
        <!--  回头下一个vnc的客户端,远程连接属主机的vnc端口 ,如果你有端口冲突一类的事,要注意自己调配 -->
       </devices>
</domain>
二,配置文件导入kvm
virsh define coreos.xml
三,本应该提前准备的东西

  coreos启动后需要执行一次安装,命令大概形式如下:

sudo su -  root
coreos-install -d /dev/sda -C stable -c cloud-config -b http://192.168.122.2/

这里,
第一需要一个安装的配置文件cloud-config
第二需要一个能下载刚才的 coreos_production_image.bin.bz2 文件的地方

  第二个需求好办,把下载回来的文件一起放在局域网里的http服务上,嗯,一个做过后才领悟的小坑,这个文件的位置要放在 他自己的版本号目录下如我的 /var/www/html/2303.3.0/ 如果你不知道具体版本号,你启动后会停在下载的位置,哪里他指出了url的全部路径。

  第一个需求:cloud-config配置文件, 最好不要在终端里去敲,写好了放在跟刚才http的网络上, coreos启动后已经具备很多工具比如wget, 你可以远程下回来。不排除你会遭受很多失败,省力气是你能走多远的重要一环

wget http://192.168.122.2/cloud-config

四、 cloud-config怎么写

  说到这个配置,得吐槽一下。coreos到底经历了什么,网上漫天飞的cloud-config 其实并不是coreos的正主,去看看官网上怎么说,cloud-config 是写成yaml文件,让人写人看的, 机器执行的是一个叫做Ignition Config的文件格式,yaml由经过一个ct工具转换而来。对比了一下两种格式大概一种就是yaml另外一种Ignition大概是json....., 值得说的是,这两种文件目前其实都能用,可能yaml支持的东西有限吧,简单安装还是能对付的,毕竟人家已经选了正主了,不过,在这篇文字里先就着yaml用,

#cloud-config

users:  
  - name: core
    ssh-authorized-keys: 
      - ssh-rsa AAAAB3NzaC . ....
  - groups:
      - sudo
      - docker

这里的ssh-authorized-keys 我直接用我属主机上的/root/.ssh/id_rsa.pub ,如果你没有,ssh-keygen生成一下, 很多利用xshell生成的,我也用过,还是觉得linux下自带的方便 ,一路回车就ok。
将id_rsa.pub 一行全部copy过来。

#ssh-keygen  

待会用ssh登录时候用

如果不是用户自己默认的秘钥,加-i 指定自己的私钥
ssh -i /path/id_rsa  core@192.168.122.x  
如果用默认用户自己的秘钥,就不用加参数了
ssh  core@192.168.122.x  

也很多人不习惯这种,想生成password,是可以的,这里抄一段官网的。

passwd:
  users:
    - name: user1
      password_hash: "$6$43y3tkl..."
      ssh_authorized_keys:
        - key1
      home_dir: /home/user1
      no_create_home: true
      groups:
        - wheel
        - plugdev

重要的是这password_hash的生成方式,也有好几种.
如下:

# On Debian/Ubuntu (via the package "whois")
mkpasswd --method=SHA-512 --rounds=4096

# OpenSSL (note: this will only make md5crypt.  While better than plantext it should not be considered fully secure)
openssl passwd -1

# Python
python -c "import crypt,random,string; print(crypt.crypt(input('clear-text password: '), '\$6\$' + ''.join([random.choice(string.ascii_letters + string.digits) for _ in range(16)])))"

# Perl (change password and salt values)
perl -e 'print crypt("password","\$6\$SALT\$") . "\n"'

有很多诡异的东西,不得不告诉你, 我只有ssh_authorized_keys成功过。而在json的方式下,我连ssh_authorized_keys也没成功,

所以如果你性子急,等到安装完成的时候, 你还有机会做一些操作。这会儿先不说。毕竟安装完成之前,系统也没验证你的秘密秘钥是否能用。

这里可以配置的东西还有很多,基本如网络,文件什么的,先就着简单的来。不多说了。

networkd:
  units:
    - name: static.network
      contents: |
        [Match]
        Name=ens3

        [Network]
        Address=192.168.122.171/24
        Gateway=192.168.122.1
        DNS=202.101.224.68
       
systemd:
  units:
    - name: settimezone.service
      enabled: true
      contents: |
        [Unit]
        Description=Set the time zone
        [Service]
        Type=oneshot
        RemainAfterExit=yes
        ExecStart=/usr/bin/timedatectl set-timezone Asia/Shanghai

        [Install]
        WantedBy=multi-user.target
五、执行安装

用不同的安装配置文件格式,命令略有区别, 一不小心可能被蒙。
yaml格式的

sudo su -  root
coreos-install -d /dev/sda -C stable -c cloud-config -b \
  http://192.168.122.2/

Ignition格式
用github下的 container-linux-config-transpiler 工具,工具本身要make编译一下,需要golang环境,完成之后生成了一个ct执行文件,就是我们需要的转换工具
先转换格式

$/root/container-linux-config-transpiler/bin/ct   \
  < cloud-new --files-dir /etc >core1.json
其中--files-dir /etc  是去找你机器上的hosts文件,你可以自己定义一个

注意区别主要是 -i 引用core1.json配置,

sudo su -  root
coreos-install -d /dev/sda  -i  core1.json  -b http://192.168.122.2/
六、 安装结束之后

顺利的话,没多久就能看见success提示, 这并不能高兴太早,
别的不说你的key能通过吗?
如果有问题:你又是个急性子的话这里有两个办法至少帮你把眼下这个地方过了。
第一种办法,自己手动把authorized_keys 文件建起来core 用户/home/.ssh/authorized_keys,
第二种办法: 启动coreos的时候, 在GRUB 界面按e, 编辑最后一行里面
加上 coreos.autologin ,按ctrl+x ,启动后直接登录core用户, sudo su - root 想干嘛就干嘛吧,也常见于忘记密码的人。

发现已经太长了, 这部分就此打住。
可是还有一大部分未完,因为,对于用于云计算的可以规模化的集群的系统,
手工的玩法是不能满足需要的, 下一章用ipxe 完成批量操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342