docker k8s 1.3.8 + flannel
docker k8s + flannel
kubernetes 是谷歌開源的 docker 叢集管理解決方案。
專案地址:
http://kubernetes.io/
測試環境:
node-1: 10.6.0.140
node-2: 10.6.0.187
node-3: 10.6.0.188
kubernetes 叢集,包含 master 節點,與 node 節點。
關係圖:
hostnamectl --static set-hostname hostname
10.6.0.140 - k8s-master
10.6.0.187 - k8s-node-1
10.6.0.188 - k8s-node-2
部署:
一: 首先,我們需要先安裝 etcd , etcd 是k8s叢集的基礎元件。
分別安裝 etcd
yum -y install etcd
修改配置檔案,/etc/etcd/etcd.conf 需要修改如下引數:
ETCD_NAME=etcd1 ETCD_DATA_DIR="/var/lib/etcd/etcd1.etcd" ETCD_LISTEN_PEER_URLS="http://10.6.0.140:2380" ETCD_LISTEN_CLIENT_URLS="http://10.6.0.140:2379,http://127.0.0.1:2379" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.6.0.140:2380" ETCD_INITIAL_CLUSTER="etcd1=http://10.6.0.140:2380,etcd2=http://10.6.0.187:2380,etcd3=http://10.6.0.188:2380" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_INITIAL_CLUSTER_TOKEN="k8s-etcd-cluster" ETCD_ADVERTISE_CLIENT_URLS="http://10.6.0.140:2379"
其他etcd叢集中: ETCD_NAME , 以及IP 需要變動
修改 etcd 啟動檔案 /usr/lib/systemd/system/etcd.service
sed -i 's/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\"/\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --listen-client-urls=\\\"${ETCD_LISTEN_CLIENT_URLS}\\\" --advertise-client-urls=\\\"${ETCD_ADVERTISE_CLIENT_URLS}\\\" --initial-cluster-token=\\\"${ETCD_INITIAL_CLUSTER_TOKEN}\\\" --initial-cluster=\\\"${ETCD_INITIAL_CLUSTER}\\\" --initial-cluster-state=\\\"${ETCD_INITIAL_CLUSTER_STATE}\\\"/g' /usr/lib/systemd/system/etcd.service
分別啟動 所有節點的 etcd 服務
systemctl enable etcd
systemctl start etcd
檢視啟動情況
systemctl status etcd
檢視 etcd 叢集狀態:
etcdctl cluster-health
出現 cluster is healthy 表示成功
檢視 etcd 叢集成員:
etcdctl member list
二: 部署k8s 的網路 flannel
編輯 /etc/hosts 檔案,配置hostname 通訊
vi /etc/hosts 新增:
10.6.0.140 k8s-master
10.6.0.187 k8s-node-1
10.6.0.188 k8s-node-2
安裝 flannel 。
yum -y install flannel
清除網路中遺留的docker 網路 (docker0, flannel0 等)
ifconfig
如果存在 請刪除之,以免發生不必要的未知錯誤
ip link delete docker0
....
設定 flannel 所用到的IP段
etcdctl --endpoint http://10.6.0.140:2379 set /flannel/network/config '{"Network":"10.10.0.0/16","SubnetLen":25,"Backend":{"Type":"vxlan","VNI":1}}'
接下來修改 flannel 配置檔案
vim /etc/sysconfig/flanneld
FLANNEL_ETCD="http://10.6.0.140:2379,http://10.6.0.187:2379,http://10.6.0.188:2379" # 修改為 叢集地址 FLANNEL_ETCD_KEY="/flannel/network/config" # 修改為 上面匯入配置中的 /flannel/network FLANNEL_OPTIONS="--iface=em1" # 修改為 本機物理網絡卡的名稱
啟動 flannel
systemctl enable flanneld
systemctl start flanneld
下面還需要修改 docker 的啟動檔案 /usr/lib/systemd/system/docker.service
在 ExecStart 引數 dockerd 後面增加
ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS
重新讀取配置,啟動 docker
systemctl daemon-reload
systemctl start docker
檢視網路接管
ifconfig
可以看到 docker0 與 flannel.1 已經在我們設定的IP段內了,表示已經成功
三、安裝k8s
安裝k8s 首先是 Master 端安裝
下載朋友的 rpm 包
http://upyun.mritd.me/kubernetes/kubernetes-1.3.8-1.x86_64.rpm
rpm -ivh kubernetes-1.3.8-1.x86_64.rpm
由於 google 被牆 國內已經有人將映象上傳至 docker hub 裡面了 我們直接下載: docker pull chasontang/kube-proxy-amd64:v1.4.0 docker pull chasontang/kube-discovery-amd64:1.0 docker pull chasontang/kubedns-amd64:1.7 docker pull chasontang/kube-scheduler-amd64:v1.4.0 docker pull chasontang/kube-controller-manager-amd64:v1.4.0 docker pull chasontang/kube-apiserver-amd64:v1.4.0 docker pull chasontang/etcd-amd64:2.2.5 docker pull chasontang/kube-dnsmasq-amd64:1.3 docker pull chasontang/exechealthz-amd64:1.1 docker pull chasontang/pause-amd64:3.0 下載以後使用 docker tag 命令將其做別名改為 gcr.io/google_containers docker tag chasontang/kube-proxy-amd64:v1.4.0 gcr.io/google_containers/kube-proxy-amd64:v1.4.0 docker tag chasontang/kube-discovery-amd64:1.0 gcr.io/google_containers/kube-discovery-amd64:1.0 docker tag chasontang/kubedns-amd64:1.7 gcr.io/google_containers/kubedns-amd64:1.7 docker tag chasontang/kube-scheduler-amd64:v1.4.0 gcr.io/google_containers/kube-scheduler-amd64:v1.4.0 docker tag chasontang/kube-controller-manager-amd64:v1.4.0 gcr.io/google_containers/kube-controller-manager-amd64:v1.4.0 docker tag chasontang/kube-apiserver-amd64:v1.4.0 gcr.io/google_containers/kube-apiserver-amd64:v1.4.0 docker tag chasontang/etcd-amd64:2.2.5 gcr.io/google_containers/etcd-amd64:2.2.5 docker tag chasontang/kube-dnsmasq-amd64:1.3 gcr.io/google_containers/kube-dnsmasq-amd64:1.3 docker tag chasontang/exechealthz-amd64:1.1 gcr.io/google_containers/exechealthz-amd64:1.1 docker tag chasontang/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0 清楚原來下載的映象 docker rmi chasontang/kube-proxy-amd64:v1.4.0 docker rmi chasontang/kube-discovery-amd64:1.0 docker rmi chasontang/kubedns-amd64:1.7 docker rmi chasontang/kube-scheduler-amd64:v1.4.0 docker rmi chasontang/kube-controller-manager-amd64:v1.4.0 docker rmi chasontang/kube-apiserver-amd64:v1.4.0 docker rmi chasontang/etcd-amd64:2.2.5 docker rmi chasontang/kube-dnsmasq-amd64:1.3 docker rmi chasontang/exechealthz-amd64:1.1 docker rmi chasontang/pause-amd64:3.0View Code
安裝完 kubernetes 以後
配置 apiserver
編輯配置檔案
vim /etc/kubernetes/apiserver
### # kubernetes system config # # The following values are used to configure the kube-apiserver # # The address on the local server to listen to. KUBE_API_ADDRESS="--insecure-bind-address=10.6.0.140" # The port on the local server to listen on. KUBE_API_PORT="--port=8080" # Port minions listen on KUBELET_PORT="--kubelet-port=10250" # Comma separated list of nodes in the etcd cluster KUBE_ETCD_SERVERS="--etcd-servers=http://10.6.0.140:2379,http://10.6.0.187:2379,http://10.6.0.188:2379" # Address range to use for services KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" # default admission control policies KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" # Add your own! KUBE_API_ARGS=""
配置完畢以後 啟動 所有服務
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl enable kube-apiserver
systemctl enable kube-controller-manager
systemctl enable kube-scheduler
systemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler
下面 node 端安裝
wget http://upyun.mritd.me/kubernetes/kubernetes-1.3.8-1.x86_64.rpm
rpm -ivh kubernetes-1.3.8-1.x86_64.rpm
配置 kubelet
編輯配置檔案
vim /etc/kubernetes/kubelet
### # kubernetes kubelet (minion) config # The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces) KUBELET_ADDRESS="--address=10.6.0.187" # The port for the info server to serve on KUBELET_PORT="--port=10250" # You may leave this blank to use the actual hostname KUBELET_HOSTNAME="--hostname-override=k8s-node-1" # location of the api-server KUBELET_API_SERVER="--api-servers=http://10.6.0.140:8080" # Add your own! KUBELET_ARGS="--pod-infra-container-image=docker.io/kubernetes/pause:latest"
注: KUBELET_HOSTNAME 這個配置中 配置的為 hostname 名稱,主要用於區分 node 在叢集中的顯示
名稱 必須能 ping 通,所以前面在 /etc/hosts 中要做配置
下面修改 kubernetes 的 config 檔案
vim /etc/kubernetes/config
### # kubernetes system config # # The following values are used to configure various aspects of all # kubernetes services, including # # kube-apiserver.service # kube-controller-manager.service # kube-scheduler.service # kubelet.service # kube-proxy.service # logging to stderr means we get it in the systemd journal KUBE_LOGTOSTDERR="--logtostderr=true" # journal message level, 0 is debug KUBE_LOG_LEVEL="--v=0" # Should this cluster be allowed to run privileged docker containers KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver KUBE_MASTER="--master=http://10.6.0.140:8080"
最後 啟動 所有服務
systemctl start kubelet
systemctl start kube-proxy
systemctl enable kubelet
systemctl enable kube-proxy
systemctl status kubelet
systemctl status kube-proxy
master 中 測試 是否 node 已經正常
[[email protected] ~]#kubectl --server="http://10.6.0.140:8080" get node NAME STATUS AGE k8s-master NotReady 50m k8s-node-1 Ready 1m k8s-node-2 Ready 57s
四、雙向 TLS 認證配置
kubernetes 提供了多種安全認證機制 Token 或使用者名稱密碼的單向 tls 認證, 基於 CA 證書 雙向 tls 認證。
1. master 中 建立 openssl ca 證書
mkdir /etc/kubernetes/cert
必須授權
chown kube:kube -R /etc/kubernetes/cert
cd /etc/kubernetes/cert
生成私鑰
openssl genrsa -out k8sca-key.pem 2048 openssl req -x509 -new -nodes -key k8sca-key.pem -days 10000 -out k8sca.pem -subj "/CN=kube-ca"
配置 apiserver 證書
複製openssl 的配置檔案到cert目錄中
cp /etc/pki/tls/openssl.cnf .
編輯 配置檔案,支援IP認證
vim openssl.cnf
在 distinguished_name 上面新增 req_extensions = v3_req [ req ] ..... req_extensions = v3_req distinguished_name = req_distinguished_name ..... 在 [ v3_req ] 下面新增 subjectAltName = @alt_names [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names 新增 如下所有內容: [ alt_names ] DNS.1 = kubernetes DNS.2 = kubernetes.default DNS.3 = kubernetes.default.svc DNS.4 = kubernetes.default.svc.cluster.local IP.1 = ${K8S_SERVICE_IP} # kubernetes server ip IP.2 = ${MASTER_HOST} # master ip(如果都在一臺機器上寫一個就行)
然後開始簽署 apiserver 相關的證書
openssl genrsa -out apiserver-key.pem 2048 openssl req -new -key apiserver-key.pem -out apiserver.csr -subj "/CN=kube-apiserver" -config openssl.cnf openssl x509 -req -in apiserver.csr -CA k8sca.pem -CAkey k8sca-key.pem -CAcreateserial -out apiserver.pem -days 365 -extensions v3_req -extfile openssl.cnf
下面 生成 每個 node 的證書, 在 master 中生成,然後複製到各 node 中
apiserver 證書籤署完成後還需要簽署每個節點 node 的證書
cp openssl.cnf worker-openssl.cnf
編輯配置檔案:
vim worker-openssl.cnf
主要修改如下[ alt_names ]內容 , 有多少個node 就寫多少個IP配置: [ alt_names ] IP.1 = 10.6.0.187 IP.2 = 10.6.0.188
生成 k8s-node-1 私鑰 openssl genrsa -out k8s-node-1-worker-key.pem 2048 openssl req -new -key k8s-node-1-worker-key.pem -out k8s-node-1-worker.csr -subj "/CN=k8s-node-1" -config worker-openssl.cnf openssl x509 -req -in k8s-node-1-worker.csr -CA k8sca.pem -CAkey k8sca-key.pem -CAcreateserial -out k8s-node-1-worker.pem -days 365 -extensions v3_req -extfile worker-openssl.cnf 生成 k8s-node-2 私鑰 openssl genrsa -out k8s-node-2-worker-key.pem 2048 openssl req -new -key k8s-node-2-worker-key.pem -out k8s-node-2-worker.csr -subj "/CN=k8s-node-2" -config worker-openssl.cnf openssl x509 -req -in k8s-node-2-worker.csr -CA k8sca.pem -CAkey k8sca-key.pem -CAcreateserial -out k8s-node-2-worker.pem -days 365 -extensions v3_req -extfile worker-openssl.cnf 所有 node 生成以後, 還需要生成叢集管理證書 openssl genrsa -out admin-key.pem 2048 openssl req -new -key admin-key.pem -out admin.csr -subj "/CN=kube-admin" openssl x509 -req -in admin.csr -CA k8sca.pem -CAkey k8sca-key.pem -CAcreateserial -out admin.pem -days 365
配置 master
編輯 master apiserver 配置檔案
vim /etc/kubernetes/apiserver
### # kubernetes system config # # The following values are used to configure the kube-apiserver # # The address on the local server to listen to. KUBE_API_ADDRESS="--insecure-bind-address=10.6.0.140 --insecure-bind-address=127.0.0.1" # The port on the local server to listen on. KUBE_API_PORT="--secure-port=6443 --insecure-port=8080" # Port minions listen on KUBELET_PORT="--kubelet-port=10250" # Comma separated list of nodes in the etcd cluster KUBE_ETCD_SERVERS="--etcd-servers=http://10.6.0.140:2379,http://10.6.0.187:2379,http://10.6.0.188:2379" # Address range to use for services KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" # default admission control policies KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" # Add your own! KUBE_API_ARGS="--tls-cert-file=/etc/kubernetes/cert/apiserver.pem --tls-private-key-file=/etc/kubernetes/cert/apiserver-key.pem --client-ca-file=/etc/kubernetes/cert/k8sca.pem --service-account-key-file=/etc/kubernetes/cert/apiserver-key.pem"
接著編輯 controller manager 的配置
vim /etc/kubernetes/controller-manager
### # The following values are used to configure the kubernetes controller-manager # defaults from config and apiserver should be adequate # Add your own! KUBE_CONTROLLER_MANAGER_ARGS="--service-account-private-key-file=/etc/kubernetes/cert/apiserver-key.pem --root-ca-file=/etc/kubernetes/cert/k8sca.pem --master=http://127.0.0.1:8080"
接著 重啟 所有服務
systemctl restart kube-apiserver
systemctl restart kube-controller-manager
systemctl restart kube-scheduler
systemctl status kube-apiserver
systemctl status kube-controller-manager
systemctl status kube-scheduler
配置 node 節點
先 copy 配置檔案 到 node 節點
k8s-node-1 節點:
mkdir /etc/kubernetes/cert/
必須授權
chown kube:kube -R /etc/kubernetes/cert
拷貝如下三個檔案到 /etc/kubernetes/cert/ 目錄下
k8s-node-1-worker-key.pem
k8s-node-1-worker.pem
k8sca.pem
k8s-node-2 節點:
mkdir /etc/kubernetes/cert/
必須授權
chown kube:kube -R /etc/kubernetes/cert
拷貝如下三個檔案到 /etc/kubernetes/cert/ 目錄下
k8s-node-2-worker-key.pem
k8s-node-2-worker.pem
k8sca.pem
如下配置 所有 node 節點都需要配置
修改 kubelet 配置
vim /etc/kubernetes/kubelet
### # kubernetes kubelet (minion) config # The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces) KUBELET_ADDRESS="--address=10.6.0.188" # The port for the info server to serve on KUBELET_PORT="--port=10250" # You may leave this blank to use the actual hostname KUBELET_HOSTNAME="--hostname-override=k8s-node-2" # location of the api-server KUBELET_API_SERVER="--api-servers=https://10.6.0.140:6443" # Add your own! KUBELET_ARGS="--tls-cert-file=/etc/kubernetes/cert/k8s-node-1-worker.pem --tls-private-key-file=/etc/kubernetes/cert/k8s-node-1-worker-key.pem --kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml --pod-infra-container-image=docker.io/kubernetes/pause:latest"
修改 config 配置
vim /etc/kubernetes/config
### # kubernetes system config # # The following values are used to configure various aspects of all # kubernetes services, including # # kube-apiserver.service # kube-controller-manager.service # kube-scheduler.service # kubelet.service # kube-proxy.service # logging to stderr means we get it in the systemd journal KUBE_LOGTOSTDERR="--logtostderr=true" # journal message level, 0 is debug KUBE_LOG_LEVEL="--v=0" # Should this cluster be allowed to run privileged docker containers KUBE_ALLOW_PRIV="--allow-privileged=false" # How the controller-manager, scheduler, and proxy find the apiserver KUBE_MASTER="--master=https://10.6.0.140:6443"
建立 kube-proxy 配置檔案
vim /etc/kubernetes/worker-kubeconfig.yaml
# 內容如下
apiVersion: v1 kind: Config clusters: - name: local cluster: certificate-authority: /etc/kubernetes/cert/k8sca.pem users: - name: kubelet user: client-certificate: /etc/kubernetes/cert/k8s-node-1-worker.pem client-key: /etc/kubernetes/cert/k8s-node-1-worker-key.pem contexts: - context: cluster: local user: kubelet name: kubelet-context current-context: kubelet-context
配置 kube-proxy 使其使用證書
vim /etc/kubernetes/proxy
### # kubernetes proxy config # default config should be adequate # Add your own! KUBE_PROXY_ARGS="--master=https://10.6.0.140:6443 --kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml"
重啟動並測試
systemctl restart kubelet
systemctl restart kube-proxy
systemctl status kubelet
systemctl status kube-proxy
至此,整個叢集已經搭建完成,剩下的就是pod 的測試
相關推薦
docker k8s 1.3.8 + flannel
docker k8s + flannel kubernetes 是谷歌開源的 docker 叢集管理解決方案。 專案地址: http://kubernetes.io/ 測試環境: node-1: 10.6.0.140node-2: 10.6.0.187node-3: 10.6.0.188 kubernetes
windows Visual Studio 2017 編譯 HEVC cmake-3.8.1-win64-x64.msi 下載
color 找到 style des 當前 pen span 分享 自動 ttps://github.com/OpenHEVC/openHEVC 下載一 直接下載源碼(可選)或下載源碼包,我這裏下載的是源碼 打開 Visual Studio () 去 github
題目: 2/1, 3/2, 5/3, 8/5, 13/8, 21 13 ...
core image src scanner find log out sum his java源碼: package studying; import java.util.Scanner; public class Sum_Of_FirstN {
[k8s]k8s 1.9(on the fly搭建) 1.9_cni-flannel部署排錯 ipvs模式
wap sch byte cer ica 同步 disable cred 0.12 角色 節點名 節點ip master n1 192.168.14.11 節點1 n2 192.168.14.12 節點2 n3 192.168.14.13 htt
2018-1-31 8周3次課 rsync服務同步,系統日誌,screen工具
ado weight 上傳 端口 previous oar linux speed recv 10.32 rsync通過服務同步(上)·啟動服務之前,先編輯文件 /etc/rsync.conf·啟動服務:rsync --daemon (--config=文件,如果rsync
Junit 3.8.1 源碼分析之兩個接口
htm get strac .html tab actual string errors iter 1. Junit源碼文件說明 runner framework:整體框架; extensions:可以對程序進行擴展; textui:JUnit運行時的入口程序以及程序結
8月第5周業務風控關註 |1.3億中國人的開房記錄暗網火熱叫賣 售價8個比特幣
提取 交換 fine 工作 勒索 價格 系統漏洞 mage 業務風控 易盾業務風控周報每周呈報值得關註的安全技術和事件,包括但不限於內容安全、移動安全、業務安全和網絡安全,幫助企業提高警惕,規避這些似小實大、影響業務健康發展的安全風險。 1.1.3億中國人的開房記錄暗網火熱
centos7.3 kubernetes/k8s 1.10 離線安裝 --已驗證
using over expired eset local 筆記 方式 don boot 本文介紹在centos7.3使用kubeadm快速離線安裝kubernetes 1.10。 采用單master,單node(可以多node),占用資源較少,方便在筆記本或學習環境快速
8.2.1.3 Range 優化
range access method 方法使用單個索引去取回資料表的子集,它包含一個或多個索引值區間.Rang它能對單個部分索引或者多個部分索引使用.以下章節給出詳細的描述 去解釋怎麼從where語句中解析區間。 1.The Range Access Method for Single-Part In
8.1.3 mysql安裝與基本管理
一、MySQL介紹 MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型資料庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係資料庫
[演算法入門經典] 8.1.3 分治法 求最大連續和
int maxsum(int *A,int x,int y) //返回陣列在左比右開區間[x,y)中的最大連續和 { int i, m, v, L, R, max; if(y-x==1) return A[x]; //只有一個元素,直接返回 m=x+(
harbour-offline-install-v1.2.2+etcd-V3.3.8+k8s-v1.11.3版本下載
harbour-offline-install-v1.2.2+etcd-v3.3.8+k8s-v1.11.3版本下載 1、harbour-offline-installer-v1.2.2.tgz下載 http://harbor.orientsoft.cn/harbor-1.2.2/harbor-
DOCKER-1-3-虛擬化網路
1.ifconfig檢視網路裝置資訊。安裝網橋工具bridge-utils以使用命令brctl。檢視在執行的容器。brctl show檢視網橋資訊,從docker0有四條連線,分別是在執行容器的連線。檢視ip連線資訊。 2.通過exec -it到busybox容器。通過ifco
ACMNO.12有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。 輸入 N 輸出 數列前N項和 樣例輸入 10
題目描述 有一分數序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出這個數列的前N項之和,保留兩位小數。 輸入 N 輸出 數列前N項和 樣例輸入 10 樣例輸出 16.48 來源/分類 C語言 題目
3.8.1 塊作用域
在深入學習控制結構之前,需要了解塊(block)的概念。 塊(即符合語句)是指由一對大括號括起來的若干條簡單的Java語句。塊確定了變數的作用域。一個塊可以巢狀在另一個塊中。但是,不能在巢狀的兩個塊中宣告同名變數。因為內
VirtualBox: Installing Alpine 3.8.1
VirtualBox Installing Alpine 3.8.1 Install 啟動虛擬機器,用光碟啟動,然後用root登入AlpineLinux,沒有密碼 敲入命令 setup-alpine 跟隨命令列嚮導一步一步執行 在選擇安裝源時,敲入“f”讓系統自己尋找一
P6Spy 3.8.1 釋出,無縫擷取資料庫資料框架
P6Spy 3.8.1 已釋出。 P6Spy 是一個可以用來在應用程式中攔截和修改資料操作語句的開源框架。 通過 P6Spy 我們可以對 SQL 語句進行攔截,相當於一個 SQL 語句的記錄器,這樣我們可以用它來作相關的分析,比如效能分析。 該版本主要是修復了 bug:
okhttp3 3.8.1版本 中類OkHttpClient.java的原始碼剖析學習
/* * Copyright (C) 2012 Square, Inc. *照貓畫虎 依葫蘆畫瓢 個人能力理解解釋,老外屬性和方法不寫功能註釋,這樣很不爽 這裡面是不是用到了一個設計模式叫構建者? (建議大家學習設計模式可以先學習概念然後再到實際開源專案中去尋找具體的例子,然後再結合設計
k8s 1.8.10 叢集搭建
k8s 1.8.10 Build 1.環境資訊 OS–>centos7.2 kubernetes–>1.8.10 flannel–>0.9.1 docker–>17.12.0-ce etcd–>3.2.12 da
Material UI 3.8.1 釋出,Material Design 元件
Material UI 3.8.1 釋出了,Material UI 是一組實現 Google Material Design 規範的 React 元件,它是一個前端 JS 框架,主要用在 web 領域。 更新內容如下: @material-ui/[email p