From Fedora Project Wiki
Description
Install Kubernetes on Fedora Atomic Host using system containers and ansible.
Setup
- Install one or more Fedora Atomic Hosts.
- Prepare a host from which to run ansible scripts:
dnf install ansible python-netaddr git-core -y
- If you want to run ansible from the atomic host you're testing, use:
rpm-ostree install ansible python-netaddr git-core && rpm-ostree ex livefs
- Fetch the ansible scripts:
git clone https://github.com/kubernetes/contrib.git && cd contrib/ansible
- Create an inventory file with your host information.
vi inventory/inventory
# two nodes and one master with host names # atomic1, atomic2, atomic3 [masters] atomic1 [etcd:children] masters [nodes] atomic[2:3]
# all in one setup where you run the ansible # scripts from the host you're configuring [masters] localhost [etcd:children] masters [nodes:children] masters
- Enable system containers install option:
vi inventory/group_vars/all.yml
kube_use_node_system_container: true kube_use_master_system_container: true kube_use_etcd_system_container: true kube_use_flannel_system_container: true
- Configure the authentication section of all.yml as needed:
vi inventory/group_vars/all.yml
# Account name of remote user. Ansible will use this user account to ssh into # the managed machines. The user must be able to use sudo without asking # for password unless ansible_sudo_pass is set #ansible_ssh_user: root # password for the ansible_ssh_user. If this is unset you will need to set up # ssh keys so a password is not needed. #ansible_ssh_pass: password # If a password is needed to sudo to root that password must be set here #ansible_sudo_pass: password
How to test
Be as specific as required for the target audience.
- Run the deploy script:
cd scripts ./deploy_cluster.sh
- ssh to your master host and check on the install:
# kubectl get nodes NAME STATUS AGE VERSION localhost Ready 28m v1.6.7
# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system elasticsearch-logging-v1-6zg5w 1/1 Running 0 33m kube-system elasticsearch-logging-v1-h62pl 1/1 Running 0 33m kube-system fluentd-es-v1.20-7r8v5 1/1 Running 0 28m kube-system heapster-v1.2.0-2450593556-10z2c 4/4 Running 0 27m kube-system kibana-logging-3308848018-g136s 1/1 Running 0 33m kube-system kube-dns-v20-ldj28 3/3 Running 0 33m kube-system monitoring-influxdb-grafana-v3-llxsc 2/2 Running 0 33m
- Run some test apps
# kubectl run nginx --image=nginx --port=80 --replicas=3 deployment "nginx" created # kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-158599303-dbkjw 1/1 Running 0 19s 172.17.0.3 localhost nginx-158599303-g4q7c 1/1 Running 0 19s 172.17.0.11 localhost nginx-158599303-n0mwm 1/1 Running 0 19s 172.17.0.10 localhost # kubectl expose deployment nginx --type NodePort service "nginx" exposed # kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 40m nginx 10.254.52.120 <nodes> 80:32681/TCP 14s # curl http://$HOSTIP:32681 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
Expected Results
- The ansible scripts run without error.
- You're able to run Kubernetes apps using the cluster.