Thank you for your post. 

I too am trying different methods/stacks as well to pxe boot a 42u bare metal 
rack into a cluster. os running in ram of course.  what was your experience 
with Rancher and core os together?  Do you recommend Bootkube+matchbox over 
coreosmatchbox/ rancher?  I like ranchers extra environment / name spaces, acl 
web interface, logging and cli access.  However, I dont know how to automate 
creating and joining the cluster. it appears rancher was primarily designed for 
a hard disk install, and manual cluster creation.  Could this be automatied?  
or is it just not worth it.

(I already use pxe matchbox /ignition / coreos so maybe I should dump rancher 
and run bootkube)

Thoughts?



On Wednesday, June 28, 2017 at 4:55:24 AM UTC-5, mrpanigale wrote:
> I have evaluated to the best of my ability:
> - Rancher + RancherOS
> - Rancher + CoreOS
> - CoreOS Kubernetes (Manual installation)
> - CoreOS Kubernetes (Tectonic)
> 
> - CoreOS SelfHosted (Bootkube+matchbox) 
> 
> 
> Quick Summary:
> With RancherOS my experience is that you have to be careful to install a OS 
> version with a compatilbe docker for kubernetes. I also dont like to be 
> locked into docker, prefer systemd as an init system as the rancherOS init 
> system, in comparison, is limited.
> 
> 
> Rancher + CoreOS installation experience is the best. However only 1.5 is 
> supported. 1.6 is not yet released and i could not get a cluster started 
> using there development branch. Also for advanced K8 users, advanced 
> customization of the installation process I found difficult (e.g. custom CA 
> for certificate authentication, etc.). In order to make the provisioning 
> process smooth you will want to use CoreOS matchbox.
> 
> 
> CoreOS manual installation is excellent however it does not explain how to 
> provision the systemd units onto the machines. I am a big CoreOS fleet fan so 
> I initially created fleet units to deploy the documented systemd units. 
> CoreOS has now deprecated Fleet so this approach is not also not recommended. 
> Also the documentation can sometime be out of date.
> 
> 
> CoreOS bootkube+matchboxI also struggled with CoreOS tectonic but ironically 
> am very happy with bootkube+matchbox on CoreOS (which is what tectonic is 
> based on). I would highly recommend it. 
> https://github.com/coreos/matchbox/blob/master/Documentation/bootkube.md
> I would also recommend bootkube over CoreOS manual installation as the 
> documentation is more likely to be maintained and up to date as it is the 
> basis for tectonic. 
> More interesting is that bootkube gives you access to features such as "self 
> hosted etcd" where etcd is deployed into kubernetes itsself. 
> 
> 
> 
> With bootkube+matchbox I am able to iPXE boot a bare metal server kubernetes 
> master in 5 minutes with no manual intervention. New workers are also 
> automatcially joined with no manual intervention simply from an iPXE boot. 
> The advantage of the iPXE approach is also that you can seemlessly test it 
> using virtualization and the process is the same (there are some small issue 
> like network adapters taking more time to come online on bare metal but in 
> general i dont have to make any changes).
> 
> 
> One strange part of the boot-kube flow is having to ssh on to each machine 
> and "scp" certificates and kubeconfig. 
> I extended the matchbox bootkube-install example to dynamically download all 
> required assets such that no manual intervention is required. This is one of 
> the advantages of the CoreOS ignition process where you can setup indirection 
> to download all your kubernetes assets from a remote server.
> 
> 
> Some examples scripts below:
> 
> 
> #generated bootkube config
> bootkube render --asset-dir=assets --api-servers=https://192.168.122.10:443 
> --api-server-alt-names=DNS=k8.example.com,IP=192.168.122.10 
> --etcd-servers=https://192.168.122.10:2379 --experimental-self-hosted-etcd
> 
> 
> 
> #start matchbox ipxe server
> docker run -p 8080:8080 --rm -v $PWD/examples:/var/lib/matchbox:Z -v 
> $PWD/examples/groups/bootkube-install:/var/lib/matchbox/groups:Z 
> quay.io/coreos/matchbox:latest -address=0.0.0.0:8080 -log-level=debug
> 
> 
> 
> #examples/groups/bootkube-install/node1.json extended for dynamic bootkube
> 
> {
>   "id": "node1",
>   "name": "Controller Node",
>   "profile": "bootkube-controller",
>   "selector": {
>     "mac": "18:03:73:3f:6d:bf",
>     "os": "installed"
>   },
>   "metadata": {
>     "cluster_id" : "test_agent",
>     "config_server": "http://172.20.20.219:1979/k8/test_agent";,
>     "ip_address" : "192.168.122.10",
>     "ip_gateway" : "192.168.122.1",
>     "net_mask" : "23",
>     "domain_name": "k8.example.com",
>     "etcd_initial_cluster": "k8=https://192.168.122.10:2380";,
>     "etcd_endpoints": "https://192.168.122.10:2379";,
>     "etcd_name": "k8",
>     "k8s_dns_service_ip": "10.3.0.10",
>     "ssh_authorized_keys": [
>       "ssh-rsa ..."    ]
>   }
> }
> 
> 
> 
> 
> #examples/ignition/bootkube-controller.yaml extended for dynamic bootkube
> 
> networkd:
>   units:
>     - name: 00-static.network
>       contents: |
>         [Match]
>         Name=e*
>         [Network]
>         DNS=8.8.8.8
>         Address={{.ip_address}}/{{.net_mask}}
>         Gateway={{.ip_gateway}}
> systemd:
>   units:
>     - name: bootkube.service
>       enable: true
>       contents: |
>         [Unit]
>         Description=Bootstrap a Kubernetes control plane with a temp 
> api-server
>         [Service]
>         Type=simple
>         RemainAfterExit=yes
>         Restart=always
>         RestartSec=20
>         WorkingDirectory=/opt/bootkube
>         ExecStartPre=/bin/sh -c 'wget -r -np -nH -x --cut-dirs=1 
> {{.config_server}}/'
>         ExecStartPre=/bin/sh -c 'mv {{.cluster_id}} /opt/bootkube/assets'
>         ExecStart=/opt/bootkube/bootkube-start
>         [Install]
>         WantedBy=multi-user.target
> 
> storage:
>   files:
>     - path: /etc/ssl/etcd/etcd-client.crt
>       filesystem: root
>       mode: 0644
>       contents:
>         remote:
>           url: "{{.config_server}}/tls/etcd-client.crt"
> 
> 
> On Tuesday, June 27, 2017 at 7:06:48 AM UTC+2, luce...@gmail.com wrote:Using 
> Kubernetes 1.6 on Bar Metal servers (production) seems to be difficult.
>     Tested CoreOs and Tectonic,  not working on Bar Metal servers.
>     Bar Metal servers and conjure-up kubernetes not possible. (+ Maas)
>     Rancher is working but the whole system is based on the docker daemon, 
> systemd is a better choice as base system for Kubernetes. (Like CoreOs does)
> 
>     A possible solution is kubeadm but kubeadm is not ready for production!
>    Are there other possibilities?

-- 
You received this message because you are subscribed to the Google Groups 
"Kubernetes user discussion and Q&A" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to kubernetes-users+unsubscr...@googlegroups.com.
To post to this group, send email to kubernetes-users@googlegroups.com.
Visit this group at https://groups.google.com/group/kubernetes-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to