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.
