附018.K3S-ETCD高可用部署
一 K3S概述
1.1 K3S介绍
- 适用于:
- 边缘计算-Edge
- 物联网-IoT
- CI
- ARM
1.2 K3S特点
- 移除过时的功能、Alpha功能、非默认功能,这些功能在大多数Kubernetes集群中已不可用。
- 删除内置插件(比如云供应商插件和存储插件),可用外部插件程序替换。
- 添加SQLite3作为默认的数据存储。etcd3仍然可用,但并非默认项。
- 包含在一个简单的启动程序当中,可以处理复杂的TLS和其他选项。
- 几乎没有操作系统依赖性(仅需要健全的内核和cgroup挂载)。k3s软件包所需的依赖:
- containerd
- Flannel
- CoreDNS
- CNI
- 主机系统服务 (iptables, socat, etc)
1.3 K3S架构
- 两个或更多server节点;
- 一个外部数据存储。
1.4 worker节点注册
二 K3S部署规划
2.1 节点需求
2.2 节点规划
节点主机名
|
IP
|
类型
|
运行服务
|
master01
|
172.24.12.11
|
k3s master节点
|
containerd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、flannel
|
master02
|
172.24.12.12
|
k3s master节点
|
containerd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、flannel
|
master03
|
172.24.12.13
|
k3s master节点
|
containerd、etcd、kube-apiserver、kube-scheduler、kube-controller-manager、kubectl、flannel
|
worker01
|
172.24.12.21
|
k3s worker节点
|
containerd、kubelet、proxy、flannel
|
worker02
|
172.24.12.22
|
k3s worker节点
|
containerd、kubelet、proxy、flannel
|
worker03
|
172.24.12.23
|
k3s worker节点
|
containerd、kubelet、proxy、flannel
|
三 K3S部署准备
3.1 变量参数准备
1 #!/bin/sh
2 #****************************************************************#
3 # ScriptName: environment.sh
4 # Author: xhy
5 # Create Date: 2020-05-13 12:21
6 # Modify Author: xhy
7 # Modify Date: 2020-05-13 12:21
8 # Version:
9 #***************************************************************#
10
11 # 集群 MASTER 机器 IP 数组
12 export MASTER_IPS=(172.24.12.11 172.24.12.12 172.24.12.13)
13
14 # 集群 MASTER IP 对应的主机名数组
15 export MASTER_NAMES=(master01 master02 master03)
16
17 # 集群 NODE 机器 IP 数组
18 export NODE_IPS=(172.24.12.21 172.24.12.22 172.24.12.23)
19
20 # 集群 NODE IP 对应的主机名数组
21 export NODE_NAMES=(worker01 worker02 worker03)
22
23 # 集群所有机器 IP 数组
24 export ALL_IPS=(172.24.12.11 172.24.12.12 172.24.12.13 172.24.12.21 172.24.12.22 172.24.12.23)
25
26 # 集群所有IP 对应的主机名数组
27 export ALL_NAMES=(master01 master02 master03 worker01 worker02 worker03)
28
29 # etcd 集群服务地址列表
30 export ETCD_ENDPOINTS="https://172.24.12.11:2379,https://172.24.12.12:2379,https://172.24.12.13:2379"
31
32 # etcd 集群间通信的 IP 和端口
33 export ETCD_NODES="master01=https://172.24.12.11:2380,master02=https://172.24.12.12:2380,master03=https://172.24.12.13:2380"
34
35 # 节点间互联网络接口名称
36 export IFACE="eth0"
37
38 # etcd 数据目录
39 export ETCD_DATA_DIR="/data/k3s/etcd/data"
40
41 # etcd WAL 目录,建议是 SSD 磁盘分区,或者和 ETCD_DATA_DIR 不同的磁盘分区
42 export ETCD_WAL_DIR="/data/k3s/etcd/wal"
3.2 相关优化
1 #!/bin/sh
2 #****************************************************************#
3 # ScriptName: k3sinit.sh
4 # Author: xhy
5 # Create Date: 2020-05-13 18:56
6 # Modify Author: xhy
7 # Modify Date: 2020-05-13 18:56
8 # Version:
9 #***************************************************************#
10 # Initialize the machine. This needs to be executed on every machine.
11
12 # Disable the SELinux.
13 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
14
15 # Turn off and disable the firewalld.
16 systemctl stop firewalld
17 systemctl disable firewalld
18
19 # Modify related kernel parameters & Disable the swap.
20 cat > /etc/sysctl.d/k3s.conf << EOF
21 net.ipv4.ip_forward = 1
22 net.bridge.bridge-nf-call-ip6tables = 1
23 net.bridge.bridge-nf-call-iptables = 1
24 net.ipv4.tcp_tw_recycle = 0
25 vm.swappiness = 0
26 vm.overcommit_memory = 1
27 vm.panic_on_oom = 0
28 net.ipv6.conf.all.disable_ipv6 = 1
29 EOF
30 sysctl -p /etc/sysctl.d/k8s.conf >&/dev/null
31 swapoff -a
32 sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
33 modprobe br_netfilter
34
35 # Add ipvs modules
36 cat > /etc/sysconfig/modules/ipvs.modules <<EOF
37 #!/bin/bash
38 modprobe -- ip_vs
39 modprobe -- ip_vs_rr
40 modprobe -- ip_vs_wrr
41 modprobe -- ip_vs_sh
42 modprobe -- nf_conntrack_ipv4
43 EOF
44 chmod 755 /etc/sysconfig/modules/ipvs.modules
45 bash /etc/sysconfig/modules/ipvs.modules
46
47 # Install rpm
48 yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget
3.3 配置免秘钥
1 [root@master01 ~]# cat > etc/hosts << EOF
2 172.24.12.11 master01
3 172.24.12.12 master02
4 172.24.12.13 master03
5 172.24.12.21 worker01
6 172.24.12.22 worker02
7 172.24.12.23 worker03
8 EOF
1 [root@master01 ~]# source /root/environment.sh
2 [root@master01 ~]# for all_ip in ${ALL_IPS[@]}
3 do
4 echo ">>> ${all_ip}"
5 ssh-copy-id -i ~/.ssh/id_rsa.pub root@${all_ip}
6 scp /etc/hosts root@${all_ip}:/etc/hosts
7 scp environment.sh root@${all_ip}:/root/
8 scp k3sinit.sh root@${all_ip}:/root/
9 ssh root@${all_ip} "chmod +x /root/environment.sh"
10 ssh root@${all_ip} "chmod +x /root/k3sinit.sh"
11 ssh root@${all_ip} "bash /root/k3sinit.sh &"
12 done
四 自定义证书
4.1 安装cfssl
1 [root@master01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl #下载cfssl软件
2 [root@master01 ~]# chmod u+x /usr/local/bin/cfssl
3 [root@master01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson #下载json模板
4 [root@master01 ~]# chmod u+x /usr/local/bin/cfssljson
5 [root@master01 ~]# curl -L https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo
6 [root@master01 ~]# chmod u+x /usr/local/bin/cfssl-certinfo
7 [root@master01 ~]# mkdir /opt/k3s/work
8 [root@master01 ~]# cd /opt/k3s/work
9 [root@master01 cert]# cfssl print-defaults config > config.json
10 [root@master01 cert]# cfssl print-defaults csr > csr.json #创建模版配置json文件
4.2 创建根证书
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# cp config.json ca-config.json #复制一份作为CA的配置文件
3 [root@master01 work]# cat > ca-config.json <<EOF
4 {
5 "signing": {
6 "default": {
7 "expiry": "168h"
8 },
9 "profiles": {
10 "kubernetes": {
11 "expiry": "87600h",
12 "usages": [
13 "signing",
14 "key encipherment",
15 "server auth",
16 "client auth"
17 ]
18 }
19 }
20 }
21 }
22 EOF
- signing: 表示该证书可用于签名其它证书;生成的ca.pem 证书中CA=TRUE;
- server auth: 表示client 可以用该CA 对server 提供的证书进行校验;
- client auth: 表示server 可以用该CA 对client 提供的证书进行验证。
1 [root@master01 work]# cp csr.json ca-csr.json #复制一份作为CA的证书签名请求文件
2 [root@master01 work]# cat > ca-csr.json <<EOF
3 {
4 "CN": "kubernetes",
5 "key": {
6 "algo": "rsa",
7 "size": 2048
8 },
9 "names": [
10 {
11 "C": "CN",
12 "ST": "Shanghai",
13 "L": "Shanghai",
14 "O": "k3s",
15 "OU": "System"
16 }
17 ]
18 }
19 EOF
- CN: Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名(User Name);浏览器使用该字段验证网站是否合法;
- C:country;
- ST:state;
- L:city;
- O: Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组(Group);
- OU:organization unit。
4.3 分发根证书
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for all_ip in ${ALL_IPS[@]}
4 do
5 echo ">>> ${all_ip}"
6 ssh root@${all_ip} "mkdir -p /etc/kubernetes/cert"
7 scp ca*.pem ca-config.json root@${all_ip}:/etc/kubernetes/cert
8 done
五 安装ETCD
5.1 安装ETCD
1 [root@master01 ~]# wget https://github.com/coreos/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gz
2 [root@master01 ~]# tar -xvf etcd-v3.4.7-linux-amd64.tar.gz
5.2 分发ETCD
1 [root@master01 ~]# for master_ip in ${MASTER_IPS[@]}
2 do
3 echo ">>> ${master_ip}"
4 scp etcd-v3.4.7-linux-amd64/etcd* root@${master_ip}:/usr/local/bin
5 ssh root@${master_ip} "chmod +x /usr/local/bin/*"
6 ssh root@${master_ip} "mkdir -p /data/k3s/etcd/data"
7 ssh root@${master_ip} "mkdir -p /data/k3s/etcd/wal"
8 done
5.3 创建etcd证书和密钥
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 cert]# cat > etcd-csr.json <<EOF
3 {
4 "CN": "etcd",
5 "hosts": [
6 "127.0.0.1",
7 "localhost",
8 "172.24.12.11",
9 "172.24.12.12",
10 "172.24.12.13"
11 ],
12 "key": {
13 "algo": "rsa",
14 "size": 2048
15 },
16 "names": [
17 {
18 "C": "CN",
19 "ST": "Shanghai",
20 "L": "Shanghai",
21 "O": "k3s",
22 "OU": "System"
23 }
24 ]
25 }
26 EOF
27 #创建etcd的CA证书请求文件
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# cfssl gencert -ca=/opt/k3s/work/ca.pem \
3 -ca-key=/opt/k3s/work/ca-key.pem -config=/opt/k3s/work/ca-config.json \
4 -profile=kubernetes etcd-csr.json | cfssljson -bare etcd #生成CA密钥(ca-key.pem)和证书(ca.pem)
5.4 分发证书和私钥
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
4 do
5 echo ">>> ${master_ip}"
6 ssh root@${master_ip} "mkdir -p /etc/etcd/cert"
7 scp etcd*.pem root@${master_ip}:/etc/etcd/cert/
8 done
5.5 创建etcd的systemd
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# cat > etcd.service.template <<EOF
4 [Unit]
5 Description=Etcd Server
6 After=network.target
7 After=network-online.target
8 Wants=network-online.target
9 Documentation=https://github.com/coreos
10
11 [Service]
12 Type=notify
13 WorkingDirectory=${ETCD_DATA_DIR}
14 ExecStart=/usr/local/bin/etcd \\
15 --data-dir=${ETCD_DATA_DIR} \\
16 --wal-dir=${ETCD_WAL_DIR} \\
17 --name=##MASTER_NAME## \\
18 --cert-file=/etc/etcd/cert/etcd.pem \\
19 --key-file=/etc/etcd/cert/etcd-key.pem \\
20 --trusted-ca-file=/etc/kubernetes/cert/ca.pem \\
21 --peer-cert-file=/etc/etcd/cert/etcd.pem \\
22 --peer-key-file=/etc/etcd/cert/etcd-key.pem \\
23 --peer-trusted-ca-file=/etc/kubernetes/cert/ca.pem \\
24 --peer-client-cert-auth \\
25 --client-cert-auth \\
26 --listen-peer-urls=https://##MASTER_IP##:2380 \\
27 --initial-advertise-peer-urls=https://##MASTER_IP##:2380 \\
28 --listen-client-urls=https://##MASTER_IP##:2379,http://127.0.0.1:2379 \\
29 --advertise-client-urls=https://##MASTER_IP##:2379 \\
30 --initial-cluster-token=etcd-cluster-0 \\
31 --initial-cluster=${ETCD_NODES} \\
32 --initial-cluster-state=new \\
33 --auto-compaction-mode=periodic \\
34 --auto-compaction-retention=1 \\
35 --max-request-bytes=33554432 \\
36 --quota-backend-bytes=6442450944 \\
37 --heartbeat-interval=250 \\
38 --election-timeout=2000
39 Restart=on-failure
40 RestartSec=5
41 LimitNOFILE=65536
42
43 [Install]
44 WantedBy=multi-user.target
45 EOF
5.5 修改etcd systemd相应地址
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for (( i=0; i < 3; i++ ))
4 do
5 sed -e "s/##MASTER_NAME##/${MASTER_NAMES[i]}/" -e "s/##MASTER_IP##/${MASTER_IPS[i]}/" etcd.service.template > etcd-${MASTER_IPS[i]}.service
6 done
5.6 分发etcd systemd
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
4 do
5 echo ">>> ${master_ip}"
6 scp etcd-${master_ip}.service root@${master_ip}:/etc/systemd/system/etcd.service
7 done
5.7 启动ETCD
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
4 do
5 echo ">>> ${master_ip}"
6 ssh root@${master_ip} "mkdir -p ${ETCD_DATA_DIR} ${ETCD_WAL_DIR}"
7 ssh root@${master_ip} "systemctl daemon-reload && systemctl enable etcd && systemctl restart etcd " &
8 done
5.8 检查ETCD启动
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
4 do
5 echo ">>> ${master_ip}"
6 ssh root@${master_ip} "systemctl status etcd|grep Active"
7 done
5.9 验证服务状态
1 [root@master01 ~]# cd /opt/k3s/work
2 [root@master01 work]# source /root/environment.sh
3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
4 do
5 echo ">>> ${master_ip}"
6 ETCDCTL_API=3 /usr/local/bin/etcdctl \
7 --endpoints=https://${master_ip}:2379 \
8 --cacert=/etc/kubernetes/cert/ca.pem \
9 --cert=/etc/etcd/cert/etcd.pem \
10 --key=/etc/etcd/cert/etcd-key.pem endpoint health
11 done
5.10 查看ETCD当前leader
1 [root@master01 ~]# source /root/environment.sh
2 [root@master01 ~]# ETCDCTL_API=3 /usr/local/bin/etcdctl \
3 -w table --cacert=/etc/kubernetes/cert/ca.pem \
4 --cert=/etc/etcd/cert/etcd.pem \
5 --key=/etc/etcd/cert/etcd-key.pem \
6 --endpoints=${ETCD_ENDPOINTS} endpoint status
六 安装K3S server
6.1 脚本安装
1 [root@master01 ~]# curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
2 sh -s - server --write-kubeconfig ~/.kube/config \
3 --datastore-endpoint='https://172.24.12.11:2379,master02=https://172.24.12.12:2379,master03=https://172.24.12.13:2379' --datastore-cafile=/etc/kubernetes/cert/ca.pem \
4 --datastore-certfile=/etc/etcd/cert/etcd.pem \
5 --datastore-keyfile=/etc/etcd/cert/etcd-key.pem \
6 --token=x120952576 \
7 --tls-san=172.24.12.254
8 [root@master01 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
- INSTALL_K3S_MIRROR:中国区用户设置INSTALL_K3S_MIRROR=cn可加速K3S二进制文件下载,也可以直接手动下载二进制文件。
- INSTALL_K3S_SKIP_DOWNLOAD:如果设置为true,则不会下载K3s hash文件或K3S二进制文件。
- INSTALL_K3S_SYMLINK:如果设置为skip将不会创建软链接,force将强制覆盖,如果path中不存在命令,则默认值为符号链接。
- INSTALL_K3S_SKIP_START:如果设置为true,将不会自动启动K3s服务。
- INSTALL_K3S_VERSION:可从github下载的K3s版本。如果未指定,将尝试下载latest版本。
- INSTALL_K3S_BIN_DIR:将K3S的二进制文件,软链接和卸载脚本安装到的目录,/usr/local/bin用作默认目录。
- INSTALL_K3S_BIN_DIR_READ_ONLY:如果设置为true,则不会写入文件到INSTALL_K3S_BIN_DIR,如果需要强制写入则设置INSTALL_K3S_SKIP_DOWNLOAD=true。
- INSTALL_K3S_SYSTEMD_DIR:将systemd服务和环境变量文件安装到的目录,/etc/systemd/system用作默认目录。
- INSTALL_K3S_EXEC:当未指定INSTALL_K3S_EXEC变量,或设置了K3S_URL变量,或在INSTALL_K3S_EXEC变量中没有添加server执行命令,那么k3s默认将以agent角色运行。反之,会默认以server角色运行。最终,systemd命令会被解析为EXEC命令和脚本参数的组合($@)。
- INSTALL_K3S_NAME:如果未指定,将默认使用K3s exec命令创建的systemd服务的名称。如果指定,名称将以k3s-为前缀。
- INSTALL_K3S_TYPE:要创建的systemd服务类型,如果未指定,将默认使用K3s exec命令。
6.2 确认验证
1 [root@master01 ~]# kubectl get nodes
1 [root@master01 ~]# kubectl taint node master01 node-role.kubernetes.io/master="":NoSchedule
2 [root@master01 ~]# kubectl taint node master01 node-role.kubernetes.io/master="":NoSchedule
3 [root@master01 ~]# kubectl taint node master01 node-role.kubernetes.io/master="":NoSchedule
七 高可用优化
7.1 Keepalived安装
1 [root@master01 ~]# for master_ip in ${MASTER_IPS[@]}
2 do
3 echo ">>> ${master_ip}"
4 ssh root@${master_ip} "yum -y install gcc gcc-c++ make libnl libnl-devel libnfnetlink-devel openssl-devel"
5 ssh root@${master_ip} "wget http://down.linuxsb.com:8888/software/keepalived-2.0.20.tar.gz"
6 ssh root@${master_ip} "tar -zxvf keepalived-2.0.20.tar.gz"
7 ssh root@${master_ip} "cd keepalived-2.0.20/ && ./configure --sysconf=/etc --prefix=/usr/local/keepalived && make && make install"
8 ssh root@${master_ip} "systemctl enable keepalived && systemctl start keepalived"
9 done
7.2 创建配置文件
1 [root@master01 ~]# wget http://down.linuxsb.com:8888/k3s_ha.sh #下载高可用自动配置脚本
2 [root@master01 ~]# vi k3s_ha.sh #其他部分保持默认
3 # master keepalived virtual ip address
4 export K3SHA_VIP=172.24.12.254
5
6 # master01 ip address
7 export K3SHA_IP1=172.24.12.11
8
9 # master02 ip address
10 export K3SHA_IP2=172.24.12.12
11
12 # master03 ip address
13 export K3SHA_IP3=172.24.12.13
14
15 # master01 hostname
16 export K3SHA_HOST1=master01
17
18 # master02 hostname
19 export K3SHA_HOST2=master02
20
21 # master03 hostname
22 export K3SHA_HOST3=master03
23
24 # master01 network interface name
25 export K3SHA_NETINF1=eth0
26
27 # master02 network interface name
28 export K3SHA_NETINF2=eth0
29
30 # master03 network interface name
31 export K3SHA_NETINF3=eth0
32
33 [root@master01 ~]# bash k3s_ha.sh
- keepalived:keepalived配置文件,位于各个master节点的/etc/keepalived目录
- nginx-lb:nginx-lb负载均衡配置文件,位于各个master节点的/root/nginx-lb目录
7.3 启动Keepalived
1 [root@master01 ~]# cat /etc/keepalived/keepalived.conf
2 [root@master01 ~]# cat /etc/keepalived/check_apiserver.sh 确认Keepalived配置
3 [root@master01 ~]# for master_ip in ${MASTER_IPS[@]}
4 do
5 echo ">>> ${master_ip}"
6 ssh root@${master_ip} "systemctl restart keepalived.service"
7 ssh root@${master_ip} "systemctl status keepalived.service"
8 ssh root@${master_ip} "ping -c1 172.24.12.254"
9 done
7.4 确认验证
1 [root@master01 ~]# kubectl -n kube-system get pods | grep -E 'NAME|nginx'
2 NAME READY STATUS RESTARTS AGE
3 nginx-lb-2dk6z 1/1 Running 0 2m56s
4 nginx-lb-68s47 1/1 Running 0 2m56s
5 nginx-lb-nbc9l 1/1 Running 0 2m56s
7.5 启用高可用
1 [root@master01 ~]# vi /etc/rancher/k3s/k3s.yaml
2 ……
3 server: https://172.24.12.254:16443
4 ……
八 worker节点加入
8.1 worker节点加入集群
1 [root@worker01 ~]# curl -sfL https://docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
2 sh -s - agent --server https://172.24.12.254:16443 --token x120952576
3 [root@worker01 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
8.2 其他命令参数
1 [root@master01 ~]# k3s server --help #查看k3s server更多参数
2 [root@worker01 ~]# k3s agent --help #查看k3s agent更多参数
九 部署Longhorn
9.1 Longhorn概述
9.2 Longhorn部署
1 [root@master01 ~]# yum -y install iscsi-initiator-utils
1 [root@master01 ~]# wget \
2 https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
3 [root@master01 ~]# vi longhorn.yaml
1 #……
2 ---
3 kind: Service
4 apiVersion: v1
5 metadata:
6 labels:
7 app: longhorn-ui
8 name: longhorn-frontend
9 namespace: longhorn-system
10 spec:
11 type: NodePort #修改为nodeport
12 selector:
13 app: longhorn-ui
14 ports:
15 - port: 80
16 targetPort: 8000
17 nodePort: 8888
18 ---
19 #……
9.3 动态sc创建
1 [root@master01 ~]# kubectl get sc
2 NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
3 ……
4 longhorn driver.longhorn.io Delete Immediate true 15m
1 [root@master01 ~]# vi longhornsc.yaml
1 kind: StorageClass
2 apiVersion: storage.k8s.io/v1
3 metadata:
4 name: longhornsc
5 provisioner: rancher.io/longhorn
6 parameters:
7 numberOfReplicas: "3"
8 staleReplicaTimeout: "30"
9 fromBackup: ""
1 [root@master01 ~]# kubectl create -f longhornsc.yaml
9.4 测试PV及PVC
1 [root@master01 ~]# vi longhornpod.yaml
1 apiVersion: v1
2 kind: PersistentVolumeClaim
3 metadata:
4 name: longhorn-pvc
5 spec:
6 accessModes:
7 - ReadWriteOnce
8 storageClassName: longhorn
9 resources:
10 requests:
11 storage: 2Gi
12 ---
13 apiVersion: v1
14 kind: Pod
15 metadata:
16 name: longhorn-pod
17 namespace: default
18 spec:
19 containers:
20 - name: volume-test
21 image: nginx:stable-alpine
22 imagePullPolicy: IfNotPresent
23 volumeMounts:
24 - name: volv
25 mountPath: /data
26 ports:
27 - containerPort: 80
28 volumes:
29 - name: volv
30 persistentVolumeClaim:
31 claimName: longhorn-pvc
32
1 [root@master01 ~]# kubectl create -f longhornpod.yaml
附018.K3S-ETCD高可用部署的更多相关文章
- kubernetes1.7.6 ha高可用部署
写在前面: 1. 该文章部署方式为二进制部署. 2. 版本信息 k8s 1.7.6,etcd 3.2.9 3. 高可用部分 etcd做高可用集群.kube-apiserver 为无状态服务使用hap ...
- kubernetes 1.15.1 高可用部署 -- 从零开始
这是一本书!!! 一本写我在容器生态圈的所学!!! 重点先知: 1. centos 7.6安装优化 2. k8s 1.15.1 高可用部署 3. 网络插件calico 4. dashboard 插件 ...
- Cinder 架构分析、高可用部署与核心功能解析
目录 文章目录 目录 Cinder Cinder 的软件架构 cinder-api cinder-scheduler cinder-volume Driver 框架 Plugin 框架 cinder- ...
- NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署
NoSQL数据库Mongodb副本集架构(Replica Set)高可用部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. MongoDB 是一个基于分布式文件存储的数据库.由 C ...
- LVS+Keepalived高可用部署
一.LVS+Keepalived高可用部署 一.keepalived节点部署 1.安装keepalived yum install keepalived ipvsadm -y mkdir -p /op ...
- Rancher Server HA的高可用部署实验-学习笔记
转载于https://blog.csdn.net/csdn_duomaomao/article/details/78771731 Rancher Server HA的高可用部署实验-学习笔记 一.机器 ...
- eql高可用部署方案
运行环境 服务器两台(后面的所有配置案例都是以10.96.0.64和10.96.0.66为例) 操作系统CentOS release 6.2 必须要有共同的局域网网段 两台服务器都要安装keepali ...
- MooseFS及其高可用部署
MooseFS的工作原理分析 MooseFS(下面统一称为MFS)由波兰公司Gemius SA于2008年5月30日正式推出的一款Linux下的开源存储系统,是OpenStack开源云计算项目的子项目 ...
- Redis高可用部署及监控
Redis高可用部署及监控 目录 一.Redis Sentinel简介 二.硬件需求 三.拓扑结构 .单M-S结构 .双M-S结构 .优劣对比 四.配置部 ...
- 006.SQLServer AlwaysOn可用性组高可用部署
一 数据库镜像部署准备 1.1 数据库镜像支持 有关对 SQL Server 2012 中的数据库镜像的支持的信息,请参考:https://docs.microsoft.com/zh-cn/previ ...
随机推荐
- Laravel中使用JWT
Laravel 版本: Laravel Framework 6.18.3 查看版本命令: php artisan -V 1.安装JWT扩展包: composer require tymon/jwt-a ...
- vue2.x学习笔记(十二)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12592256.html. 组件基础 组件化是vue的一个重要特性,也是vue学习中非常重要的一个知识点. 基础示例 ...
- 初始化 RESTful API 风格的博客系统
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在 HelloDjango 全栈系列教程的第一步--Django博客教程(第二版)中 ...
- 在.NET Core中用最原生的方式读取Nacos的配置
背景 之前老黄写过一篇<ASP.NET Core结合Nacos来完成配置管理和服务发现>简单介绍了如何让.NET Core程序接入Nacos,之前的SDK里面更多的是对Nacos的Open ...
- vim的常用指令
vim的常用指令如下: 光标运动: h,j , k, l (上/下/左/右) 删除字符: x 删除行 : dd 模式退出 : Esc,Insert(或者i) 退出编辑器 : q 强制退出不保存: q! ...
- 怎么将swagger API导出为HTML或者PDF
文章目录 将swagger API导出为HTML或者PDF 什么是Asciidoc swagger2markup-maven-plugin asciidoctor-maven-plugin 使用命令行 ...
- Linux网络服务第二章DHCP原理与配置
1.笔记 服务端端口:67 客户端端口:68 dhcliemt -r:释放IP地址 dhcliemt -d:重新获取IP地址 :.,$ s/190.168.200 / 192.168.100 /g 从 ...
- 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10
简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...
- js 函数的多图片懒加载(lazy) 带插件版完整解析
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS实现图片懒加载效果 页面需求 1 ...
- 【Linux常见命令】pwd命令
pwd - print name of current/working directory pwd命令用于显示工作目录. 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称. 语法:pwd [ ...