mirror of https://github.com/k3s-io/k3s
Support using docker containerd in COS and Ubuntu on GCE.
Signed-off-by: Lantao Liu <lantaol@google.com>k3s-v1.15.3
parent
ed239cefa6
commit
bc1a78d31e
|
@ -79,22 +79,30 @@ fi
|
|||
# you are updating the os image versions, update this variable.
|
||||
# Also please update corresponding image for node e2e at:
|
||||
# https://github.com/kubernetes/kubernetes/blob/master/test/e2e_node/jenkins/image-config.yaml
|
||||
GCI_VERSION=${KUBE_GCI_VERSION:-cos-beta-73-11647-64-0}
|
||||
GCI_VERSION=${KUBE_GCI_VERSION:-cos-73-11647-163-0}
|
||||
MASTER_IMAGE=${KUBE_GCE_MASTER_IMAGE:-}
|
||||
MASTER_IMAGE_PROJECT=${KUBE_GCE_MASTER_PROJECT:-cos-cloud}
|
||||
NODE_IMAGE=${KUBE_GCE_NODE_IMAGE:-${GCI_VERSION}}
|
||||
NODE_IMAGE_PROJECT=${KUBE_GCE_NODE_PROJECT:-cos-cloud}
|
||||
NODE_SERVICE_ACCOUNT=${KUBE_GCE_NODE_SERVICE_ACCOUNT:-default}
|
||||
|
||||
# KUBELET_TEST_ARGS are extra arguments passed to kubelet.
|
||||
KUBELET_TEST_ARGS=${KUBE_KUBELET_EXTRA_ARGS:-}
|
||||
CONTAINER_RUNTIME=${KUBE_CONTAINER_RUNTIME:-docker}
|
||||
CONTAINER_RUNTIME_ENDPOINT=${KUBE_CONTAINER_RUNTIME_ENDPOINT:-}
|
||||
CONTAINER_RUNTIME_NAME=${KUBE_CONTAINER_RUNTIME_NAME:-}
|
||||
LOAD_IMAGE_COMMAND=${KUBE_LOAD_IMAGE_COMMAND:-}
|
||||
if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then
|
||||
CONTAINER_RUNTIME_NAME=${KUBE_CONTAINER_RUNTIME_NAME:-containerd}
|
||||
CONTAINER_RUNTIME_ENDPOINT=${KUBE_CONTAINER_RUNTIME_ENDPOINT:-unix:///run/containerd/containerd.sock}
|
||||
LOAD_IMAGE_COMMAND=${KUBE_LOAD_IMAGE_COMMAND:-ctr -n=k8s.io images import}
|
||||
KUBELET_TEST_ARGS="${KUBELET_TEST_ARGS} --runtime-cgroups=/system.slice/containerd.service"
|
||||
fi
|
||||
|
||||
# MASTER_EXTRA_METADATA is the extra instance metadata on master instance separated by commas.
|
||||
MASTER_EXTRA_METADATA=${KUBE_MASTER_EXTRA_METADATA:-${KUBE_EXTRA_METADATA:-}}
|
||||
# MASTER_EXTRA_METADATA is the extra instance metadata on node instance separated by commas.
|
||||
NODE_EXTRA_METADATA=${KUBE_NODE_EXTRA_METADATA:-${KUBE_EXTRA_METADATA:-}}
|
||||
# KUBELET_TEST_ARGS are extra arguments passed to kubelet.
|
||||
KUBELET_TEST_ARGS=${KUBE_KUBELET_EXTRA_ARGS:-}
|
||||
|
||||
NETWORK=${KUBE_GCE_NETWORK:-default}
|
||||
# Enable network deletion by default (for kube-down), unless we're using 'default' network.
|
||||
|
|
|
@ -86,17 +86,25 @@ ALLOWED_NOTREADY_NODES="${ALLOWED_NOTREADY_NODES:-$(($(get-num-nodes) / 100))}"
|
|||
# you are updating the os image versions, update this variable.
|
||||
# Also please update corresponding image for node e2e at:
|
||||
# https://github.com/kubernetes/kubernetes/blob/master/test/e2e_node/jenkins/image-config.yaml
|
||||
GCI_VERSION=${KUBE_GCI_VERSION:-cos-beta-73-11647-64-0}
|
||||
GCI_VERSION=${KUBE_GCI_VERSION:-cos-73-11647-163-0}
|
||||
MASTER_IMAGE=${KUBE_GCE_MASTER_IMAGE:-}
|
||||
MASTER_IMAGE_PROJECT=${KUBE_GCE_MASTER_PROJECT:-cos-cloud}
|
||||
NODE_IMAGE=${KUBE_GCE_NODE_IMAGE:-${GCI_VERSION}}
|
||||
NODE_IMAGE_PROJECT=${KUBE_GCE_NODE_PROJECT:-cos-cloud}
|
||||
NODE_SERVICE_ACCOUNT=${KUBE_GCE_NODE_SERVICE_ACCOUNT:-default}
|
||||
|
||||
CONTAINER_RUNTIME=${KUBE_CONTAINER_RUNTIME:-docker}
|
||||
CONTAINER_RUNTIME_ENDPOINT=${KUBE_CONTAINER_RUNTIME_ENDPOINT:-}
|
||||
CONTAINER_RUNTIME_NAME=${KUBE_CONTAINER_RUNTIME_NAME:-}
|
||||
LOAD_IMAGE_COMMAND=${KUBE_LOAD_IMAGE_COMMAND:-}
|
||||
GCI_DOCKER_VERSION=${KUBE_GCI_DOCKER_VERSION:-}
|
||||
if [[ "${CONTAINER_RUNTIME}" == "containerd" ]]; then
|
||||
CONTAINER_RUNTIME_NAME=${KUBE_CONTAINER_RUNTIME_NAME:-containerd}
|
||||
CONTAINER_RUNTIME_ENDPOINT=${KUBE_CONTAINER_RUNTIME_ENDPOINT:-unix:///run/containerd/containerd.sock}
|
||||
LOAD_IMAGE_COMMAND=${KUBE_LOAD_IMAGE_COMMAND:-ctr -n=k8s.io images import}
|
||||
KUBELET_TEST_ARGS="${KUBELET_TEST_ARGS:-} --runtime-cgroups=/system.slice/containerd.service"
|
||||
fi
|
||||
|
||||
# MASTER_EXTRA_METADATA is the extra instance metadata on master instance separated by commas.
|
||||
MASTER_EXTRA_METADATA=${KUBE_MASTER_EXTRA_METADATA:-${KUBE_EXTRA_METADATA:-}}
|
||||
# MASTER_EXTRA_METADATA is the extra instance metadata on node instance separated by commas.
|
||||
|
|
|
@ -2877,6 +2877,73 @@ function ensure-bootstrap-kubectl-auth {
|
|||
fi
|
||||
}
|
||||
|
||||
function setup-containerd {
|
||||
echo "Generate containerd config"
|
||||
local config_path="${CONTAINERD_CONFIG_PATH:-"/etc/containerd/config.toml"}"
|
||||
mkdir -p "$(dirname "${config_path}")"
|
||||
local cni_template_path="${KUBE_HOME}/cni.template"
|
||||
cat > "${cni_template_path}" <<EOF
|
||||
{
|
||||
"name": "k8s-pod-network",
|
||||
"cniVersion": "0.3.1",
|
||||
"plugins": [
|
||||
{
|
||||
"type": "ptp",
|
||||
"mtu": 1460,
|
||||
"ipam": {
|
||||
"type": "host-local",
|
||||
"subnet": "{{.PodCIDR}}",
|
||||
"routes": [
|
||||
{
|
||||
"dst": "0.0.0.0/0"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "portmap",
|
||||
"capabilities": {
|
||||
"portMappings": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
if [[ "${KUBERNETES_MASTER:-}" != "true" ]]; then
|
||||
if [[ "${NETWORK_POLICY_PROVIDER:-"none"}" != "none" || "${ENABLE_NETD:-}" == "true" ]]; then
|
||||
# Use Kubernetes cni daemonset on node if network policy provider is specified
|
||||
# or netd is enabled.
|
||||
cni_template_path=""
|
||||
fi
|
||||
fi
|
||||
# Reuse docker group for containerd.
|
||||
local containerd_gid="$(cat /etc/group | grep ^docker: | cut -d: -f 3)"
|
||||
cat > "${config_path}" <<EOF
|
||||
# Kubernetes doesn't use containerd restart manager.
|
||||
disabled_plugins = ["restart"]
|
||||
|
||||
[debug]
|
||||
level = "${CONTAINERD_LOG_LEVEL:-"info"}"
|
||||
|
||||
[grpc]
|
||||
gid = ${containerd_gid}
|
||||
|
||||
[plugins.cri]
|
||||
stream_server_address = "127.0.0.1"
|
||||
max_container_log_line_size = ${CONTAINERD_MAX_CONTAINER_LOG_LINE:-262144}
|
||||
[plugins.cri.cni]
|
||||
bin_dir = "${KUBE_HOME}/bin"
|
||||
conf_dir = "/etc/cni/net.d"
|
||||
conf_template = "${cni_template_path}"
|
||||
[plugins.cri.registry.mirrors."docker.io"]
|
||||
endpoint = ["https://mirror.gcr.io","https://registry-1.docker.io"]
|
||||
EOF
|
||||
chmod 644 "${config_path}"
|
||||
|
||||
echo "Restart containerd to load the config change"
|
||||
systemctl restart containerd
|
||||
}
|
||||
|
||||
########### Main Function ###########
|
||||
function main() {
|
||||
echo "Start to configure instance for kubernetes"
|
||||
|
@ -2964,9 +3031,12 @@ function main() {
|
|||
fi
|
||||
|
||||
override-kubectl
|
||||
container_runtime="${CONTAINER_RUNTIME:-docker}"
|
||||
# Run the containerized mounter once to pre-cache the container image.
|
||||
if [[ "${CONTAINER_RUNTIME:-docker}" == "docker" ]]; then
|
||||
if [[ "${container_runtime}" == "docker" ]]; then
|
||||
assemble-docker-flags
|
||||
elif [[ "${container_runtime}" == "containerd" ]]; then
|
||||
setup-containerd
|
||||
fi
|
||||
start-kubelet
|
||||
|
||||
|
|
|
@ -782,8 +782,8 @@ function construct-linux-kubelet-flags {
|
|||
if [[ -n "${NODE_TAINTS:-}" ]]; then
|
||||
flags+=" --register-with-taints=${NODE_TAINTS}"
|
||||
fi
|
||||
if [[ -n "${CONTAINER_RUNTIME:-}" ]]; then
|
||||
flags+=" --container-runtime=${CONTAINER_RUNTIME}"
|
||||
if [[ "${CONTAINER_RUNTIME:-}" != "docker" ]]; then
|
||||
flags+=" --container-runtime=remote"
|
||||
fi
|
||||
if [[ -n "${CONTAINER_RUNTIME_ENDPOINT:-}" ]]; then
|
||||
flags+=" --container-runtime-endpoint=${CONTAINER_RUNTIME_ENDPOINT}"
|
||||
|
|
Loading…
Reference in New Issue