Docker筆記


lxc:LinuX Container
chroot,根切換;
namespaces:名稱空間
CGroups:控制組
簡單使用:
lxc-checkconfig:
檢查系統環境是否知足容器使用要求;
lxc-create:建立lxc容器;
lxc-create -n NAME -t TEMPLATE_NAME
lxc-start:啓動容器;
lxc-start -n NAME -d
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
lxc-info:查看容器相關的信息;
lxc-info -n NAME
lxc-console:附加至指定容器的控制檯;
lxc-console -n NAME -t NUMBER
lxc-stop:中止容器;
lxc-destory:刪除處於停機狀態的容器;
lxc-snapshot:建立和恢復快照;
Docker安裝方法:
docker雙發行版:
docker-ee
docker-ce
moby
一、CentOS Extras Repo
二、Docker-CEphp

下載:https://download.docker.com/html


倉庫配置文件:https://download.docker.com/linux/centos/docker-ce.repo
Docker組件:node

docker程序環境:
環境配置文件:
/etc/sysconfig/docker-network
/etc/sysconfig/docker-storage
/etc/sysconfig/docker
Unit File:
/usr/lib/systemd/system/docker.service
Docker Registry配置文件:
/etc/containers/registries.confmysql

docker-ce:
配置文件:/etc/docker/daemon.jsonlinux

Docker鏡像加速
docker cn
阿里雲加速器
中國科技大學nginx

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}git

 

註冊阿里雲帳號,專用加速器地址得到路徑:
https://cr.console.aliyun.com/#/acceleratorgithub


物理:
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 2/14
Client <--> Daemon <--> Registry Server
邏輯:
Containers:容器
Images:鏡像、映像
Registry:Image Repositories
容器的狀態:
created:
runing:
paused:
stopped:
deleted:
docker
images
pull
run
ps
查看docker相關的信息:
version
info
鏡像:
images
rmi
pull
容器:
run:建立並運行一個容器;
create:建立一個容器;
start:啓動一個處於中止狀態容器;
建立:
create
run
啓動:
start
中止:
kill
stop
重啓:
restart
暫停和繼續:
pause
unpause
刪除容器:
rm
run --rm
建立容器:
基於「鏡像文件」,
鏡像文件有默認要運行的程序;
注意:
運行的容器內部必須有一個工做前臺的運行的進程;
docker的容器的一般也是僅爲運行一個程序;
要想在容器內運行多個程序,通常須要提供一個管控程序,例如supervised。
run, create
--name CT_NAME
--rm:容器運行終止即自行刪除
--network BRIDGE:讓容器加入的網絡;
默認爲docker0;
交互式啓動一個容器:
-i:--interactive,交互式;
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 3/14
-t:Allocate a pseudo-TTY
從終端拆除:ctrl+p, ctrl+q
attach:附加至某運行狀態的容器的終端設備;
exec:讓運行中的容器運行一個額外的程序;
查看:
logs:Fetch the logs of a container,容器內部程序運行時輸出到終端的信息;
ps:List containers
-a, --all:列出全部容器;
--filter, -f:過濾器條件顯示
name=
status={stopped|running|paused}
stats:動態方式顯示容器的資源佔用狀態:
top:Display the running processes of a container
Docker Hub:
docker login
docker logout
docker push
docker pull
鏡像製做:
基於容器製做
在容器中完成操做後製做;
基於鏡像製做
編輯一個Dockerfile,然後根據此文件製做;
基於容器製做:
docker commit
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
--author, -a
--pause, -p
--message, -m
--change, -c
將鏡像文件導出爲tar文件:
docker save
Save one or more images to a tar archive (streamed to STDOUT by default)
docker save [OPTIONS] IMAGE [IMAGE...]
從tar文件導入鏡像 :
docker load
Load an image from a tar archive or STDIN
docker load [OPTIONS]
--input, -i Read from tar archive file, instead of STDIN
--quiet, -q false Suppress the load output
Docker參考手冊:
https://docs.docker.com/engine/reference/commandline/dockerd/sql

配置docker守護進程的屬性信息的方法:/etc/docker/daemon.json
每個可設置的鍵是dockerd的可用的選項,其值爲選項的參數;但有些參數不可用於此文件中,例如add-registry,
insecure-registry;
有些選項的參數是數組的格式,須要放置於[];docker

官方手冊(完整的可用參數列表):
https://docs.docker.com/engine/reference/commandline/dockerd/#run-multiple-daemons

{
"authorization-plugins": [],
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt
4
/14
"data-root": "",
"dns": [],
"dns-opts": [],
"dns-search": [],
"exec-opts": [],
"exec-root": "",
"experimental": false,
"storage-driver": "",
"storage-opts": [],
"labels": [],
"live-restore": true,
"log-driver": "",
"log-opts": {},
"mtu": 0,
"pidfile": "",
"cluster-store": "",
"cluster-store-opts": {},
"cluster-advertise": "",
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"default-shm-size": "64M",
"shutdown-timeout": 15,
"debug": true,
"hosts": [],
"log-level": "",
"tls": true,
"tlsverify": true,
"tlscacert": "",
"tlscert": "",
"tlskey": "",
"swarm-default-advertise-addr": "",
"api-cors-header": "",
"selinux-enabled": false,
"userns-remap": "",
"group": "",
"cgroup-parent": "",
"default-ulimits": {},
"init": false,
"init-path": "/usr/libexec/docker-init",
"ipv6": false,
"iptables": false,
"ip-forward": false,
"ip-masq": false,
"userland-proxy": false,
"userland-proxy-path": "/usr/libexec/docker-proxy",
"ip": "0.0.0.0",
"bridge": "",
"bip": "",
"fixed-cidr": "",
"fixed-cidr-v6": "",
"default-gateway": "",
"default-gateway-v6": "",
"icc": false,
"raw-logs": false,
"allow-nondistributable-artifacts": [],
"registry-mirrors": [],
"seccomp-profile": "",
"insecure-registries": [],
"disable-legacy-registry": false,
"no-new-privileges": false,
"default-runtime": "runc",
"oom-score-adjust": -500,
"runtimes": {
"runc": {
"path": "runc"
},
"custom": {
"path": "/usr/local/bin/my-runc-replacement",
"runtimeArgs": [
"--debug"
]
}
}
}
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 5/14

dockerd守護進程的C/S,其默認僅監聽Unix SOcket格式的地址,/var/run/docker.sock;若是使用TCP套接字,
/etc/docker/daemon.json:
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

也可向dockerd直接傳遞「-H|--host」選項;

 


自定義docker0橋的網絡屬性信息:/etc/docker/daemon.json文件
{
"bip": "192.168.1.5/24",
"fixed-cidr": "10.20.0.0/16",
"fixed-cidr-v6": "2001:db8::/64",
"mtu": 1500,
"default-gateway": "10.20.1.1",
"default-gateway-v6": "2001:db8:abcd::89",
"dns": ["10.20.1.2","10.20.1.3"]
}

核心選項爲bip,即bridge ip之意,用於指定docker0橋自身的IP地址;其它選項可經過此地址計算得出。
文檔路徑:
https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/


容器構建示例:
https://github.com/mysql/mysql-docker


容器的資源限制:
CPU:
RAM:
Device:
--device-read-bps value Limit read rate (bytes per second) from a device (default [])
--device-read-iops value Limit read rate (IO per second) from a device (default [])
--device-write-bps value Limit write rate (bytes per second) to a device (default [])
--device-write-iops value Limit write rate (IO per second) to a device (default [])
Docker private Registry的Nginx反代配置方式:
client_max_body_size 0;
location / {
proxy_pass http://registrysrvs;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
auth_basic "Docker Registry Service";
auth_basic_user_file "/etc/nginx/.ngxpasswd";
}

Docker-distribution配置文件格式詳細信息:
https://docs.docker.com/registry/configuration/#list-of-configuration-options


Kubernetes
架構:master/agent
master主機:
kube-apiserver
kube-scheduler
kube-controller-manager
agent主機(node):
kubelet
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 6/14
container runtime(docker/rkt/...)
kube-proxy
容器編排三套解決方案:
kubernetes
mesos+marathon
machine+swarn+compose

Kubernetes:
組件:master, nodes, database(k/v store)
master:apiserver, controller-manager, scheduler
nodes: kubelet, kube-proxy, container runtime
核心術語:
Pod, label, service, ingress
網絡插件:flannel, ...

 

 

Kubernetes-1.8安裝:
yum 倉庫:
https://yum.kubernetes.io/
https://packages.cloud.google.com/yum/repos

 


Kubernetes Cluster:
環境:
master, etcd:172.18.0.67
node1:172.18.0.68
node2:172.18.0.69
前提:
一、基於主機名通訊:/etc/hosts;
二、時間同步;
三、關閉firewalld和iptables.service;
OS:CentOS 7.3.1611, Extras倉庫中;
安裝配置步驟:
一、etcd cluster,僅master節點;
二、flannel,集羣的全部節點;
三、配置k8s的master:僅master節點;
kubernetes-master
啓動的服務:
kube-apiserver, kube-scheduler, kube-controller-manager
四、配置k8s的各Node節點;
kubernetes-node
先設定啓動docker服務;
啓動的k8s的服務:
kube-proxy, kubelet
deployment示例:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
# Unique key of the Deployment instance
name: deployment-example
spec:
# 2 Pods should exist at all times.
replicas: 2
template:
metadata:
labels:
# Apply this label to pods and default
# the Deployment label selector to this value
app: nginx
spec:
containers:
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 7/14
- name: nginx
# Run this image
image: nginx:1.12
service示例:

kind: Service
apiVersion: v1
metadata:
# Unique key of the Service instance
name: nginx-example
spec:
ports:
# Accept traffic sent to port 80
- name: http
port: 80
targetPort: 80
selector:
# Loadbalance traffic across Pods matching
# this label selector
app: nginx
# Create an HA proxy in the cloud provider
# with an External IP address - *Only supported
# by some cloud providers*
type: LoadBalancer
Docker Compose
MySQL:
mysql: ### 容器名稱
image: mysql:5.7 ### 官方鏡像 版本號5.7
volumes:
- mysql-data:/var/lib/mysql ### 數據卷,mysql數據就存放在這裏
ports:
- "3306:3306" ###端口映射,主機端口:容器對外端口
environment:
- MYSQL_ROOT_PASSWORD=123456 ### 設置環境變量,這個變量名是官方鏡像定義的。

PHP:
php-fpm:
build:
context: ./php ### 自定義PHP鏡像的配置目錄
volumes:
- ./www:/var/www/html ### 主機文件與容器文件映射共享,PHP代碼存這裏
expose:
- "9000" ### 容器對外暴露的端口
depends_on:
- mysql ### 依賴並連接Mysql容器,這樣在PHP容器就能夠經過mysql做爲主機名來訪問Mysql容器了

Nginx:
nginx:
build:
context: ./nginx ### 自定義Nginx鏡像的配置目錄
volumes:
- ./www:/var/www/html 主機文件與容器文件映射共享,PHP代碼存這裏
ports:
- "80:80" ### 端口映射,若是你主機80端口被佔用,能夠用8000:80
- "443:443"
depends_on:
- php-fpm ### 依賴並鏈接PHP容器,這樣在Nginx容器就能夠經過php-fpm做爲主機名來訪問PHP容器了


Kubernetes:
master/node
pod:network, uts, storage volumes
PodIP
master主機:
apiserver、scheduler、controller-manager、etcd (CoreOS, raft, zab)
node主機:
kubelet(agent), kube-proxy(userspace/iptables/ipvs), container engine
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 8/14

邏輯組件:
Pod:容器集,
原子調度單元:一個Pod的全部容器要運行於同一個節點;

nmt:
tomcat <- nginx
mariadb <- tomcat application
nginx <- Client

label

Controller --> label selector --> Pod (label)
管理Pod:確保Pod副本數量嚴格符合用戶定義;
Service --> label selector --> Pod (label)
爲Pod中的應用的客戶端提供一個固定的訪問端點:ClusterIP:ServicePort
ServiceName --> ClusterIP
DNS Addon

NodeIP: Node Network
ClusterIP: Cluster Network, Service
Pod IP: Pod Network, Pod

kubernetes rpm repo:
https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64/

kubeadm部署集羣的文檔:
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

google containers registry:
https://console.cloud.google.com/gcr/images/google-containers?project=google-containers


在全部主機上執行:
一、kubeadm的配置文件:
# vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
cgroups_driver=""
docker info中顯示的cgroup_driver一致;
二、關閉swap
swapoff -a

三、設置docker和kubelet開機自啓動
systemctl enable docker.service kubelet.service

四、啓動docker

五、load各鏡像
在master節點上執行:
一、初始化master:
kubeadm init --kubernetes-version=v1.10.0 --pod-network-cidr=10.244.0.0/16

 

Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join 172.18.0.80:6443 --token 7nn84i.vz7te46xm11bbjiq --discovery-token-ca-cert-hash
sha256:45920191c24cdbf496df9a3874421197aa1eab9d90021a5cdb18f5e2bb5183ef

2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 9/14
在每一個一node上執行:
# kubeadm join 172.18.0.80:6443 --token 7nn84i.vz7te46xm11bbjiq --discovery-token-ca-cert-hash
sha256:45920191c24cdbf496df9a3874421197aa1eab9d90021a5cdb18f5e2bb5183ef


四、基礎應用命令
kubectl run: 建立deployment控制器,並根據用戶指定的鏡像建立pod資源;
kubectl scale:應用擴縮容;
kubectl expose:建立service資源,用於爲某些pod提供固定訪問端點;
kubectl set image: 升級應用

kubectl命令管理對象的方式有三種:
直接命令

 


REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy-amd64 v1.10.0 bfc21aadc7d3 13 days ago 97MB
k8s.gcr.io/kube-controller-manager-amd64 v1.10.0 ad86dbed1555 13 days ago 148MB
k8s.gcr.io/kube-scheduler-amd64 v1.10.0 704ba848e69a 13 days ago 50.4MB
k8s.gcr.io/kube-apiserver-amd64 v1.10.0 af20925d51a3 13 days ago 225MB
k8s.gcr.io/etcd-amd64 3.1.12 52920ad46f5b 4 weeks ago 193MB
quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 2 months ago 44.6MB
k8s.gcr.io/pause-amd64 3.1 da86e6ba6ca1 3 months ago 742kB


node.tar
quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 2 months ago 44.6MB
k8s.gcr.io/pause-amd64 3.1 da86e6ba6ca1 3 months ago 742kB
k8s.gcr.io/kube-proxy-amd64 v1.10.0 bfc21aadc7d3 13 days ago 97MB


kubectl
直接命令:run, expose, scale, set image,
資源配置文件:命令式(create)
資源配置文件:聲明式(apply)
資源:(屬性:值)
apiVersion: groupname/version
kind:種類,Pod/Service/Deployment/ReplicationController/...
metadata:元數據, object
name:名稱
namespace:名稱空間,默認爲default
labels:標籤
annotations:註解

spec: 定義指望的目標狀態

用戶定義時使用的核心字段;

status:當前狀態
是由kubernetes系統自動維護,管理員不能人爲修改;

kubernetes的核心目標在於:讓每一個資源的當前狀態無限接近於由用戶定義的目標狀態;

資源管理動做:CRUD
kubectl
create
delete
get
edit, replace

kubectl
apply:增、改
delete
patch
get
Pod的定義完整示例:
apiVersion: v1
kind: Pod
metadata:
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 10/14
creationTimestamp: 2018-04-11T07:30:05Z
name: mypod
namespace: default
resourceVersion: "17419"
selfLink: /api/v1/namespaces/default/pods/mypod
uid: 27a47a00-3d5a-11e8-84a2-000c296c3adf
spec:
containers:
- image: nginx:1.12-alpine
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-sw47w
readOnly: true
dnsPolicy: ClusterFirst
nodeName: server3.magedu.com
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- name: default-token-sw47w
secret:
defaultMode: 420
secretName: default-token-sw47w

每一個屬性的功用及格式均可以使用kubectl explain獲取;


配置Pod資源:
spec內嵌的字段(屬性):
containers:對象列表;
內建字段:
name:容器名;
image:啓動容器使用的鏡像;
imagePullPolicy:獲取鏡像策略,下面是可用值列表
Always:老是從新到registry獲取鏡像文件;
Never:從不,僅使用本地鏡像;
IfNotPresent:僅本地不存在時纔去獲取;
ports:要暴露的端口,僅用標識,下面是可用的內建字段
containerPort:
name:
protocol:TCP/UDP
command:自定義要運行的容器應用,字串列表;
env:對象列表,可用到以下內建字段:
name: 變量名;
value:變量值;

標籤及其選擇器:
metadat內建:
labels:映射
key:最長63個字符,字母、數字、下劃線_、點號、鏈接線-
value:最長63個字符,能夠爲空,字母、數字、下劃線_、點號、鏈接線-

顯示資源標籤:
kubectl get --show-labels
kubectl get -l KEY=VALUE

標籤選擇器:
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 11/14
基於等值關係的選擇器:等值選擇器;
=,==,!=
基於集合的選擇器:集合選擇器;
KEY in (VALUE1, VALUE2, ...)
KEY notin (VALUE1, VALUE2, ...)
KEY:存在此標籤的全部資源;
!KEY:不存此標籤的全部資源;

每一個資源都支持的三個核心字段:apiVersion、kind、metadata(name, namespace, labels, annotations)

ReplicaSet的核心配置:
指望的副本數量
標籤選擇器
Pod模板


apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: rs-demo
namespace: default
labels:
controller: rs-demo
spec:
replicas: 2
selector:
matchLabels:
app: rs-demo-nginx
template:
metadata:
name: rs-demo-pod
labels:
app: rs-demo-nginx
spec:
containers:
- name: nginx
image: nginx:1.12-alpine
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80

Deployment控制器:
藉助於ReplicaSet中間層來管理Pod資源;
ReplicaSet name:deployname-HASH
Pod Name: deployname-HASH-POD_HASH

嵌套字段:
replicas
selector
template

revisionHistoryLimit <integer>:保留的replicaset資源歷史版本數;用於回滾;
strategy <Object>:更新策略
type:策略類型,Recreate, RollingUpdate

rollingUpdate:爲滾動更新機制定義其更新控制邏輯
maxSurge:更新期間,存在的由當前控制器控制的總Pod數量可超出指望值多少:
數值:0-N
百分比:0-100%
maxUnavailable:更新期間,存在的由當前控制器控制的總Pod數量可少於指望值多少;
數值:0-N
百分比:0-100%


paused <boolean>:當前控制器是否爲暫停狀態;


apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-demo
namespace: default
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 12/14
labels:
controller: deploy-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-demo
template:
metadata:
name: pod-demo
labels:
app: nginx-demo
spec:
containers:
- name: nginx
image: nginx:1.12-alpine
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80

 

 

 


數據類型:
string
boolean
list:
表示方式:["item1","item2",...]
表示方式:
- "item1"
- "item2"
object:
內嵌其它字段;
[]object:對象列表
- field1: value
field2: value
field3: value
- field1: value
field2: value
map:
關聯數組:以key:value依次給出;


Service:
Endpoint:端點
PodIP, Pod Port:Endpoint

Service Type:
ClusterIP
NodePort
LoadBalancer
ExternalName

Kubernetes Cluster:
核心組件類別:master/node
Addons:附件
dns:
skydns
kube-dns
coreDNS

 

kubectl run client --image=cirros --rm -it -- /bin/sh

Pod狀態監控:
liveness probe:存活性探測;
控制器可基於存活性探測來斷定pod資源是否爲健康狀態,是否須要重啓或重構;
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 13/14
readiness probe:就緒性探測;
爲某service資源將某後端Pod資源添加至service之上時,要事先進行pod資源的就緒狀態檢測,以免把未初始化完成的
Pod調度給請求者。


假如:service, deployment

 

 

 

 

{
"port": "8080",
"use_auth": false,
"jwt": {
"admin": {
"key": "admin"
},
"user": {
"key": "heketi"
}
},
"glusterfs": {
"executor": "ssh",
"sshexec": {
"keyfile": "/etc/heketi/heketi_key",
"user": "root",
"port": "22",
"fstab": "/etc/fstab"
},
"_db_comment": "Database file name",
"db": "/var/lib/heketi/heketi.db",
"loglevel" : "debug"
}
}

 


heketi-cli cluster info fe78e94bcac68d0acde3ad1cbc9067d1

 

Dynamic Provision: 動態供給;
PV動態建立;

heketi+glusterfs:
一、各節點安裝glusterfs客戶端:glusterfs-client;
二、heketi啓用認證時,定義存儲類時必須給定其用戶名和密碼;
restuser:
restuserkey: 不該該以明文方式直接給出;
經過k8s的另外一個標準資源secret給出;

ConfigMap, Secret:
配置容器中的應用的方法:
自定義命令及其參數;
經過環境變量傳遞參數;
對於不支持經過環境變量加載配置信息,或者僅支持有限的配置經過環境變量獲取時須要entrypoint腳本;
經過存儲卷額外提供配置文件;
標準的k8s資源;
ConfigMap:包含提供給應用的配置信息;

 

用戶帳號的相關信息:
2018/8/23 Docker.txt
file:///C:/Users/Administrator/Desktop/Docker.txt 14/14
user, group, API, Requestpath, API request verbs


HTTP: GET, HEAD, POST, PATCH, PUT, DELETE
kubectl: get, describe, edit, patch, create, apply, delete

Resources, subresource
namespace

認證:basic, https證書、http token、JWT

受權:Node,ABAC(Attribute-Based Access Control), RBAC(Role-Based Access Control)

RBAC
Role:僅生效於名稱空間
ClusterRole:生效於集羣級別

RoleBinding: ClusterRoleBinding:

相關文章
相關標籤/搜索