abcee2dccd
* Update localization guidelines for language labels
Continuing work
Continuing work
Continuing work
More work in progress
Add local OWNERS folders
Add an OWNERS file to Chinese
Remove shortcode for repos
Add Japanese
Alphabetize languages, change weights accordingly
More updates
Add Korean in Korean
Add English to languageName
Feedback from gochist
Move Chinese content from cn/ to zh/
Move OWNERS from cn/ to zh/
Resolve merge conflicts by updating from master
Add files back in to prep for resolution
After rebase on upstream/master, remove files
Review and update localization guidelines
Feedback from gochist, tnir, cstoku
Add a trailing newline to content/ja/OWNERS
Add a trailing newline to content/zh/OWNERS
Drop requirement for GH repo project
Clarify language about forks/branches
Edits and typos
Remove a shortcode specific to a multi-repo language setup
Update aliases and owners
Add explicit OWNERS for content/en
Migrate content from Chinese repo, update regex in config.toml
Remove untranslated strings
Add trailing newline to content/en/OWNERS
Add trailing newlines to OWNERS files
add Jaguar project description (#10433)
* add Jaguar project description
[Jaguar](https://gitlab.com/sdnlab/jaguar) is an open source solution for Kubernetes's network based on OpenDaylight.
Jaguar provides overlay network using vxlan and Jaguar CNIPlugin provides one IP address per pod.
* Minor newline tweak
blog post for azure vmss (#10538)
Add microk8s to pick-right-solution.md (#10542)
* Add microk8s to pick-right-solution.md
Microk8s is a single-command installation of upstream Kubernetes on any Linux and should be included in the list of local-machine solutions.
* capitalized Istio
Add microk8s to foundational.md (#10543)
* Add microk8s to foundational.md
Adding microk8s as credible and stable alternative to get started with Kubernetes on a local machine. This is especially attractive for those not wanting to incur the overhead of running a VM for a local cluster.
* Update foundational.md
Thank you for your suggestions! LMK if this works now?
* Rewrote first paragraph
And included a bullet list of features of microk8s
* Copyedit
fix typo (#10545)
Fix the kubectl subcommands links. (#10550)
Signed-off-by: William Zhang <warmchang@outlook.com>
Fix command issue (#10515)
Signed-off-by: mooncake <xcoder@tenxcloud.com>
remove imported community files per issue 10184 (#10501)
networking.md: Markdown fix (#10498)
Fix front matter, federation command-line tools (#10500)
Clean up glossary entry (#10399)
update slack link (#10536)
typo in StatefulSet docs (#10558)
fix discription about horizontal pod autoscale (#10557)
Remove redundant symbols (#10556)
Fix issue #10520 (#10554)
Signed-off-by: William Zhang <warmchang@outlook.com>
Update api-concepts.md (#10534)
Revert "Fix command issue (#10515)"
This reverts commit c02a7fb9f9.
Update memory-constraint-namespace.md (#10530)
update memory request to 100MiB corresponding the yaml content
Blog: Introducing Volume Snapshot Alpha for Kubernetes (#10562)
* blog post for azure vmss
* snapshot blog post
Resolve merge conflicts in OWNERS*
Minor typo fix (#10567)
Not sure what's supposed to be here, proposing removing it.
* Feedback from gochist
Tweaks to feedback
* Feedback from ClaudiaJKang
165 lines
5.6 KiB
YAML
165 lines
5.6 KiB
YAML
apiVersion: apps/v1beta1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: mysql
|
|
spec:
|
|
serviceName: mysql
|
|
replicas: 3
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: mysql
|
|
annotations:
|
|
pod.beta.kubernetes.io/init-containers: '[
|
|
{
|
|
"name": "init-mysql",
|
|
"image": "mysql:5.7",
|
|
"command": ["bash", "-c", "
|
|
set -ex\n
|
|
# Generate mysql server-id from pod ordinal index.\n
|
|
[[ `hostname` =~ -([0-9]+)$ ]] || exit 1\n
|
|
ordinal=${BASH_REMATCH[1]}\n
|
|
echo [mysqld] > /mnt/conf.d/server-id.cnf\n
|
|
# Add an offset to avoid reserved server-id=0 value.\n
|
|
echo server-id=$((100 + $ordinal)) >> /mnt/conf.d/server-id.cnf\n
|
|
# Copy appropriate conf.d files from config-map to emptyDir.\n
|
|
if [[ $ordinal -eq 0 ]]; then\n
|
|
cp /mnt/config-map/master.cnf /mnt/conf.d/\n
|
|
else\n
|
|
cp /mnt/config-map/slave.cnf /mnt/conf.d/\n
|
|
fi\n
|
|
"],
|
|
"volumeMounts": [
|
|
{"name": "conf", "mountPath": "/mnt/conf.d"},
|
|
{"name": "config-map", "mountPath": "/mnt/config-map"}
|
|
]
|
|
},
|
|
{
|
|
"name": "clone-mysql",
|
|
"image": "gcr.io/google-samples/xtrabackup:1.0",
|
|
"command": ["bash", "-c", "
|
|
set -ex\n
|
|
# Skip the clone if data already exists.\n
|
|
[[ -d /var/lib/mysql/mysql ]] && exit 0\n
|
|
# Skip the clone on master (ordinal index 0).\n
|
|
[[ `hostname` =~ -([0-9]+)$ ]] || exit 1\n
|
|
ordinal=${BASH_REMATCH[1]}\n
|
|
[[ $ordinal -eq 0 ]] && exit 0\n
|
|
# Clone data from previous peer.\n
|
|
ncat --recv-only mysql-$(($ordinal-1)).mysql 3307 | xbstream -x -C /var/lib/mysql\n
|
|
# Prepare the backup.\n
|
|
xtrabackup --prepare --target-dir=/var/lib/mysql\n
|
|
"],
|
|
"volumeMounts": [
|
|
{"name": "data", "mountPath": "/var/lib/mysql", "subPath": "mysql"},
|
|
{"name": "conf", "mountPath": "/etc/mysql/conf.d"}
|
|
]
|
|
}
|
|
]'
|
|
spec:
|
|
containers:
|
|
- name: mysql
|
|
image: mysql:5.7
|
|
env:
|
|
- name: MYSQL_ALLOW_EMPTY_PASSWORD
|
|
value: "1"
|
|
ports:
|
|
- name: mysql
|
|
containerPort: 3306
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /var/lib/mysql
|
|
subPath: mysql
|
|
- name: conf
|
|
mountPath: /etc/mysql/conf.d
|
|
resources:
|
|
requests:
|
|
cpu: 1
|
|
memory: 1Gi
|
|
livenessProbe:
|
|
exec:
|
|
command: ["mysqladmin", "ping"]
|
|
initialDelaySeconds: 30
|
|
timeoutSeconds: 5
|
|
readinessProbe:
|
|
exec:
|
|
# Check we can execute queries over TCP (skip-networking is off).
|
|
command: ["mysql", "-h", "127.0.0.1", "-e", "SELECT 1"]
|
|
initialDelaySeconds: 5
|
|
timeoutSeconds: 1
|
|
- name: xtrabackup
|
|
image: gcr.io/google-samples/xtrabackup:1.0
|
|
ports:
|
|
- name: xtrabackup
|
|
containerPort: 3307
|
|
command:
|
|
- bash
|
|
- "-c"
|
|
- |
|
|
set -ex
|
|
cd /var/lib/mysql
|
|
|
|
# Determine binlog position of cloned data, if any.
|
|
if [[ -f xtrabackup_slave_info ]]; then
|
|
# XtraBackup already generated a partial "CHANGE MASTER TO" query
|
|
# because we're cloning from an existing slave.
|
|
mv xtrabackup_slave_info change_master_to.sql.in
|
|
# Ignore xtrabackup_binlog_info in this case (it's useless).
|
|
rm -f xtrabackup_binlog_info
|
|
elif [[ -f xtrabackup_binlog_info ]]; then
|
|
# We're cloning directly from master. Parse binlog position.
|
|
[[ `cat xtrabackup_binlog_info` =~ ^(.*?)[[:space:]]+(.*?)$ ]] || exit 1
|
|
rm xtrabackup_binlog_info
|
|
echo "CHANGE MASTER TO MASTER_LOG_FILE='${BASH_REMATCH[1]}',\
|
|
MASTER_LOG_POS=${BASH_REMATCH[2]}" > change_master_to.sql.in
|
|
fi
|
|
|
|
# Check if we need to complete a clone by starting replication.
|
|
if [[ -f change_master_to.sql.in ]]; then
|
|
echo "Waiting for mysqld to be ready (accepting connections)"
|
|
until mysql -h 127.0.0.1 -e "SELECT 1"; do sleep 1; done
|
|
|
|
echo "Initializing replication from clone position"
|
|
# In case of container restart, attempt this at-most-once.
|
|
mv change_master_to.sql.in change_master_to.sql.orig
|
|
mysql -h 127.0.0.1 <<EOF
|
|
$(<change_master_to.sql.orig),
|
|
MASTER_HOST='mysql-0.mysql',
|
|
MASTER_USER='root',
|
|
MASTER_PASSWORD='',
|
|
MASTER_CONNECT_RETRY=10;
|
|
START SLAVE;
|
|
EOF
|
|
fi
|
|
|
|
# Start a server to send backups when requested by peers.
|
|
exec ncat --listen --keep-open --send-only --max-conns=1 3307 -c \
|
|
"xtrabackup --backup --slave-info --stream=xbstream --host=127.0.0.1 --user=root"
|
|
volumeMounts:
|
|
- name: data
|
|
mountPath: /var/lib/mysql
|
|
subPath: mysql
|
|
- name: conf
|
|
mountPath: /etc/mysql/conf.d
|
|
resources:
|
|
requests:
|
|
cpu: 100m
|
|
memory: 100Mi
|
|
volumes:
|
|
- name: conf
|
|
emptyDir: {}
|
|
- name: config-map
|
|
configMap:
|
|
name: mysql
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: data
|
|
annotations:
|
|
volume.alpha.kubernetes.io/storage-class: default
|
|
spec:
|
|
accessModes: ["ReadWriteOnce"]
|
|
resources:
|
|
requests:
|
|
storage: 10Gi
|
|
|