diff --git a/network/cluster/Vagrantfile b/network/cluster/Vagrantfile index 3a82607..1028ac9 100644 --- a/network/cluster/Vagrantfile +++ b/network/cluster/Vagrantfile @@ -3,12 +3,10 @@ Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" - config.vm.define "master" do |node| node.vm.hostname = "master" node.vm.network :private_network, ip: "10.100.198.200" node.vm.provision :shell, inline: "sed 's/127\.0\.0\.1.*master.*/10\.100\.198\.200 master/' -i /etc/hosts" - node.vm.provision :shell, path: "bootstrap.sh" config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 @@ -19,7 +17,6 @@ Vagrant.configure("2") do |config| node.vm.hostname = "node1" node.vm.network :private_network, ip: "10.100.198.201" node.vm.provision :shell, inline: "sed 's/127\.0\.0\.1.*node1.*/10\.100\.198\.201 node1/' -i /etc/hosts" - node.vm.provision :shell, path: "bootstrap.sh" config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 @@ -30,7 +27,6 @@ Vagrant.configure("2") do |config| node.vm.hostname = "node2" node.vm.network :private_network, ip: "10.100.198.202" node.vm.provision :shell, inline: "sed 's/127\.0\.0\.1.*node2.*/10\.100\.198\.202 node2/' -i /etc/hosts" - node.vm.provision :shell, path: "bootstrap.sh" config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 2 diff --git a/network/cluster/bootstrap.sh b/network/cluster/bootstrap.sh index dbc4f05..7e1a42c 100644 --- a/network/cluster/bootstrap.sh +++ b/network/cluster/bootstrap.sh @@ -4,4 +4,4 @@ echo "Installing..." curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update -sudo apt-get install -y docker-engine kubelet kubeadm kubectl +sudo apt-get install -y docker.io kubelet kubeadm kubectl diff --git a/network/cluster/flannel.yml b/network/cluster/flannel.yml new file mode 100644 index 0000000..61bbc00 --- /dev/null +++ b/network/cluster/flannel.yml @@ -0,0 +1,137 @@ +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1beta1 +metadata: + name: flannel +rules: + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - apiGroups: + - "" + resources: + - nodes + verbs: + - list + - watch + - apiGroups: + - "" + resources: + - nodes/status + verbs: + - patch +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1beta1 +metadata: + name: flannel +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: flannel +subjects: +- kind: ServiceAccount + name: flannel + namespace: kube-system +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: flannel + namespace: kube-system +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: kube-flannel-cfg + namespace: kube-system + labels: + tier: node + app: flannel +data: + cni-conf.json: | + { + "name": "cbr0", + "type": "flannel", + "delegate": { + "isDefaultGateway": true + } + } + net-conf.json: | + { + "Network": "10.244.0.0/16", + "Backend": { + "Type": "vxlan" + } + } +--- +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: kube-flannel-ds + namespace: kube-system + labels: + tier: node + app: flannel +spec: + template: + metadata: + labels: + tier: node + app: flannel + spec: + hostNetwork: true + nodeSelector: + beta.kubernetes.io/arch: amd64 + tolerations: + - key: node-role.kubernetes.io/master + operator: Exists + effect: NoSchedule + serviceAccountName: flannel + initContainers: + - name: install-cni + image: quay.io/coreos/flannel:v0.9.1-amd64 + command: + - cp + args: + - -f + - /etc/kube-flannel/cni-conf.json + - /etc/cni/net.d/10-flannel.conf + volumeMounts: + - name: cni + mountPath: /etc/cni/net.d + - name: flannel-cfg + mountPath: /etc/kube-flannel/ + containers: + - name: kube-flannel + image: quay.io/coreos/flannel:v0.9.1-amd64 + command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr" ] + securityContext: + privileged: true + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeMounts: + - name: run + mountPath: /run + - name: flannel-cfg + mountPath: /etc/kube-flannel/ + volumes: + - name: run + hostPath: + path: /run + - name: cni + hostPath: + path: /etc/cni/net.d + - name: flannel-cfg + configMap: + name: kube-flannel-cfg diff --git a/network/cluster/nginx-deployment.yaml b/network/cluster/nginx-deployment.yaml new file mode 100644 index 0000000..972b166 --- /dev/null +++ b/network/cluster/nginx-deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 +kind: Deployment +metadata: + name: nginx-deployment +spec: + selector: + matchLabels: + app: nginx + replicas: 2 + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.7.9 + ports: + - containerPort: 80 \ No newline at end of file