mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #9371 from justinsb/aws_support_wheezy
AWS: Support wheezy, for parity with GCE
This commit is contained in:
commit
82aa8f9984
@ -16,6 +16,8 @@
|
||||
|
||||
# A library of helper functions for CoreOS.
|
||||
|
||||
SSH_USER=ubuntu
|
||||
|
||||
function detect-minion-image (){
|
||||
if [[ -z "${KUBE_MINION_IMAGE-}" ]]; then
|
||||
KUBE_MINION_IMAGE=$(curl -s -L http://${COREOS_CHANNEL}.release.core-os.net/amd64-usr/current/coreos_production_ami_all.json | python -c "import json,sys;obj=json.load(sys.stdin);print filter(lambda t: t['name']=='${AWS_REGION}', obj['amis'])[0]['hvm']")
|
||||
|
@ -70,4 +70,10 @@ will run on this storage if available, as typically the root disk is comparative
|
||||
|
||||
If your machines don't have any ephemeral disks, this will default to the aufs driver on your root disk (with no LVM).
|
||||
|
||||
**KUBE_OS_DISTRIBUTION**
|
||||
|
||||
The distribution to use. Valid options: `wheezy`, `ubuntu`, `coreos`.
|
||||
|
||||
Defaults to wheezy (Debian Wheezy), which is the same as is used by default on GCE.
|
||||
|
||||
[]()
|
||||
|
@ -14,6 +14,10 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
apt-get update
|
||||
apt-get install --yes curl
|
||||
|
||||
# Retry a download until we get it.
|
||||
#
|
||||
# $1 is the URL to download
|
||||
|
@ -55,6 +55,12 @@ docker_storage=${DOCKER_STORAGE:-aufs}
|
||||
if [[ ${#block_devices[@]} == 0 ]]; then
|
||||
echo "No ephemeral block devices found; will use aufs on root"
|
||||
docker_storage="aufs"
|
||||
|
||||
# Install aufs kernel module (for ubuntu)
|
||||
apt-get install --yes linux-image-extra-$(uname -r)
|
||||
|
||||
# Install aufs tools (for debian)
|
||||
apt-get install --yes aufs-tools
|
||||
else
|
||||
echo "Block devices: ${block_devices[@]}"
|
||||
|
||||
|
51
cluster/aws/ubuntu/common.sh
Normal file
51
cluster/aws/ubuntu/common.sh
Normal file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
# A library of common helper functions for Ubuntus & Debians.
|
||||
|
||||
function detect-minion-image() {
|
||||
if [[ -z "${KUBE_MINION_IMAGE=-}" ]]; then
|
||||
detect-image
|
||||
KUBE_MINION_IMAGE=$AWS_IMAGE
|
||||
fi
|
||||
}
|
||||
|
||||
function generate-minion-user-data {
|
||||
i=$1
|
||||
# We pipe this to the ami as a startup script in the user-data field. Requires a compatible ami
|
||||
echo "#! /bin/bash"
|
||||
echo "SALT_MASTER='${MASTER_INTERNAL_IP}'"
|
||||
echo "MINION_IP_RANGE='${MINION_IP_RANGES[$i]}'"
|
||||
echo "DOCKER_OPTS='${EXTRA_DOCKER_OPTS:-}'"
|
||||
echo "readonly DOCKER_STORAGE='${DOCKER_STORAGE:-}'"
|
||||
grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/common.sh"
|
||||
grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/format-disks.sh"
|
||||
grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/salt-minion.sh"
|
||||
}
|
||||
|
||||
function check-minion() {
|
||||
local minion_name=$1
|
||||
local minion_ip=$2
|
||||
|
||||
local output=$(ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ${SSH_USER}@$minion_ip sudo docker ps -a 2>/dev/null)
|
||||
if [[ -z "${output}" ]]; then
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ${SSH_USER}@$minion_ip sudo service docker start > $LOG 2>&1
|
||||
echo "not working yet"
|
||||
else
|
||||
echo "working"
|
||||
fi
|
||||
}
|
@ -17,35 +17,8 @@
|
||||
|
||||
# A library of helper functions for Ubuntu.
|
||||
|
||||
function detect-minion-image() {
|
||||
if [[ -z "${KUBE_MINION_IMAGE=-}" ]]; then
|
||||
detect-image
|
||||
KUBE_MINION_IMAGE=$AWS_IMAGE
|
||||
fi
|
||||
}
|
||||
source "${KUBE_ROOT}/cluster/aws/ubuntu/common.sh"
|
||||
|
||||
function generate-minion-user-data {
|
||||
i=$1
|
||||
# We pipe this to the ami as a startup script in the user-data field. Requires a compatible ami
|
||||
echo "#! /bin/bash"
|
||||
echo "SALT_MASTER='${MASTER_INTERNAL_IP}'"
|
||||
echo "MINION_IP_RANGE='${MINION_IP_RANGES[$i]}'"
|
||||
echo "DOCKER_OPTS='${EXTRA_DOCKER_OPTS:-}'"
|
||||
echo "readonly DOCKER_STORAGE='${DOCKER_STORAGE:-}'"
|
||||
grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/common.sh"
|
||||
grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/format-disks.sh"
|
||||
grep -v "^#" "${KUBE_ROOT}/cluster/aws/templates/salt-minion.sh"
|
||||
}
|
||||
# TODO: Move image detection in here once it is no longer shared with CoreOS
|
||||
|
||||
function check-minion() {
|
||||
local minion_name=$1
|
||||
local minion_ip=$2
|
||||
|
||||
local output=$(ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ubuntu@$minion_ip sudo docker ps -a 2>/dev/null)
|
||||
if [[ -z "${output}" ]]; then
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ubuntu@$minion_ip sudo service docker start > $LOG 2>&1
|
||||
echo "not working yet"
|
||||
else
|
||||
echo "working"
|
||||
fi
|
||||
}
|
||||
SSH_USER=ubuntu
|
||||
|
@ -23,7 +23,7 @@ source "${KUBE_ROOT}/cluster/aws/${KUBE_CONFIG_FILE-"config-default.sh"}"
|
||||
source "${KUBE_ROOT}/cluster/common.sh"
|
||||
|
||||
case "${KUBE_OS_DISTRIBUTION}" in
|
||||
ubuntu|coreos)
|
||||
ubuntu|wheezy|coreos)
|
||||
source "${KUBE_ROOT}/cluster/aws/${KUBE_OS_DISTRIBUTION}/util.sh"
|
||||
;;
|
||||
*)
|
||||
@ -172,10 +172,34 @@ function detect-security-groups {
|
||||
}
|
||||
|
||||
# Detects the AMI to use (considering the region)
|
||||
# This really should be in the various distro-specific util functions,
|
||||
# but CoreOS uses this for the master, so for now it is here.
|
||||
#
|
||||
# TODO: Remove this and just have each distro implement detect-image
|
||||
#
|
||||
# Vars set:
|
||||
# AWS_IMAGE
|
||||
function detect-image () {
|
||||
case "${KUBE_OS_DISTRIBUTION}" in
|
||||
ubuntu|coreos)
|
||||
detect-ubuntu-image
|
||||
;;
|
||||
wheezy)
|
||||
detect-wheezy-image
|
||||
;;
|
||||
*)
|
||||
echo "Please specify AWS_IMAGE directly (distro not recognized)"
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Detects the AMI to use for ubuntu (considering the region)
|
||||
# Used by CoreOS & Ubuntu
|
||||
#
|
||||
# Vars set:
|
||||
# AWS_IMAGE
|
||||
function detect-ubuntu-image () {
|
||||
# This is the ubuntu 14.04 image for <region>, amd64, hvm:ebs-ssd
|
||||
# See here: http://cloud-images.ubuntu.com/locator/ec2/ for other images
|
||||
# This will need to be updated from time to time as amis are deprecated
|
||||
@ -856,7 +880,7 @@ function kube-up {
|
||||
sleep 10
|
||||
done
|
||||
echo "Re-running salt highstate"
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ubuntu@${KUBE_MASTER_IP} sudo salt '*' state.highstate > $LOG
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ${SSH_USER}@${KUBE_MASTER_IP} sudo salt '*' state.highstate > $LOG
|
||||
|
||||
echo "Waiting for cluster initialization."
|
||||
echo
|
||||
@ -885,9 +909,9 @@ function kube-up {
|
||||
# config file. Distribute the same way the htpasswd is done.
|
||||
(
|
||||
umask 077
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" "ubuntu@${KUBE_MASTER_IP}" sudo cat /srv/kubernetes/kubecfg.crt >"${KUBE_CERT}" 2>"$LOG"
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" "ubuntu@${KUBE_MASTER_IP}" sudo cat /srv/kubernetes/kubecfg.key >"${KUBE_KEY}" 2>"$LOG"
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" "ubuntu@${KUBE_MASTER_IP}" sudo cat /srv/kubernetes/ca.crt >"${CA_CERT}" 2>"$LOG"
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" "${SSH_USER}@${KUBE_MASTER_IP}" sudo cat /srv/kubernetes/kubecfg.crt >"${KUBE_CERT}" 2>"$LOG"
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" "${SSH_USER}@${KUBE_MASTER_IP}" sudo cat /srv/kubernetes/kubecfg.key >"${KUBE_KEY}" 2>"$LOG"
|
||||
ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" "${SSH_USER}@${KUBE_MASTER_IP}" sudo cat /srv/kubernetes/ca.crt >"${CA_CERT}" 2>"$LOG"
|
||||
|
||||
create-kubeconfig
|
||||
)
|
||||
@ -1066,7 +1090,7 @@ function kube-push {
|
||||
echo "echo Executing configuration"
|
||||
echo "sudo salt '*' mine.update"
|
||||
echo "sudo salt --force-color '*' state.highstate"
|
||||
) | ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ubuntu@${KUBE_MASTER_IP} sudo bash
|
||||
) | ssh -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ${SSH_USER}@${KUBE_MASTER_IP} sudo bash
|
||||
|
||||
get-password
|
||||
|
||||
@ -1132,7 +1156,7 @@ function ssh-to-node {
|
||||
fi
|
||||
|
||||
for try in $(seq 1 5); do
|
||||
if ssh -oLogLevel=quiet -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ubuntu@${ip} "${cmd}"; then
|
||||
if ssh -oLogLevel=quiet -oStrictHostKeyChecking=no -i "${AWS_SSH_KEY}" ${SSH_USER}@${ip} "${cmd}"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
81
cluster/aws/wheezy/util.sh
Normal file
81
cluster/aws/wheezy/util.sh
Normal file
@ -0,0 +1,81 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright 2015 The Kubernetes Authors All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
# A library of helper functions for Wheezy.
|
||||
|
||||
source "${KUBE_ROOT}/cluster/aws/ubuntu/common.sh"
|
||||
|
||||
SSH_USER=admin
|
||||
|
||||
# Detects the AMI to use for wheezy (considering the region)
|
||||
# Source: https://wiki.debian.org/Cloud/AmazonEC2Image/Wheezy
|
||||
#
|
||||
# Vars set:
|
||||
# AWS_IMAGE
|
||||
function detect-wheezy-image () {
|
||||
if [[ -z "${AWS_IMAGE-}" ]]; then
|
||||
case "${AWS_REGION}" in
|
||||
ap-northeast-1)
|
||||
AWS_IMAGE=ami-b25d44b3
|
||||
;;
|
||||
|
||||
ap-southeast-1)
|
||||
AWS_IMAGE=ami-aeb49ffc
|
||||
;;
|
||||
|
||||
ap-southeast-2)
|
||||
AWS_IMAGE=ami-6b770351
|
||||
;;
|
||||
|
||||
eu-central-1)
|
||||
AWS_IMAGE=ami-98043785
|
||||
;;
|
||||
|
||||
eu-west-1)
|
||||
AWS_IMAGE=ami-61e56916
|
||||
;;
|
||||
|
||||
sa-east-1)
|
||||
AWS_IMAGE=ami-3d8b3720
|
||||
;;
|
||||
|
||||
us-east-1)
|
||||
AWS_IMAGE=ami-e0efab88
|
||||
;;
|
||||
|
||||
us-west-1)
|
||||
AWS_IMAGE=ami-b4869ff1
|
||||
;;
|
||||
|
||||
us-west-2)
|
||||
AWS_IMAGE=ami-431a4273
|
||||
;;
|
||||
|
||||
us-gov-west-1)
|
||||
AWS_IMAGE=ami-d13455f2
|
||||
;;
|
||||
|
||||
cn-north-1)
|
||||
AWS_IMAGE=ami-48029071
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Please specify AWS_IMAGE directly (region not recognized)"
|
||||
exit 1
|
||||
esac
|
||||
fi
|
||||
}
|
Loading…
Reference in New Issue
Block a user