Kubernetes1.3 - K8S安裝
Kubernetes1.3 - K8S安裝
1 Kubernetes規劃
1.1 規劃
Master 192.168.1.11 apiserver、controller-manager、scheduler
etcd 192.168.1.11 etcd
NODE 192.168.1.12 Kubernetes+docker
NODE 192.168.1.13 Kubernetes+docker
版本:Kubernetes1.3
1.2 前期準備
(以下步驟在所有伺服器上執行)
1.2.1 停止防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
1.2.2 配置yum源
掛載系統的安裝ISO檔案
(rhel6.5.iso)
mount /dev/sr0 /mnt
cat >> /etc/yum.repos.d/rhel-source.repo<< EOF
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt
enabled=1
gpgcheck=1
gpgkey=file:///mnt/RPM-GPG-KEY-redhat-release
EOF
1.2.3 安裝IPTABLES
yum install -y iptables-services
systemctl start iptables.service
systemctl enable iptables.service
2 安裝Docker
(在Minion節點安裝docker)
Docker文件地址:
2.1 配置安裝源
配置安裝源(方法一)
cat >> /etc/yum.repos.d/docker.repo <<-EOF
[dockerrepo]
name=Docker Repository
baseurl=
enabled=1
gpgcheck=1
gpgkey=
EOF
配置安裝源(方法二)
cat >> /etc/yum.repos.d/CentOS7-Base-163.repo<< EOF
[base]
name=CentOS-$releasever - Base - 163.com
baseurl=
gpgcheck=1
gpgkey=
#released updates
[updates]
name=CentOS-$releasever - Updates - 163.com
baseurl=
gpgcheck=1
gpgkey=
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - 163.com
baseurl=
gpgcheck=1
gpgkey=
EOF
2.2 安裝
yum install docker
啟動docker服務。
service docker start
#關閉防火牆
service firewalld stop
確認docker是否安裝成功。
docker run hello-world
3 安裝KUBERNETES
3.1 安裝配置ETCD
3.1.1 下載安裝ETCD
ETCD官方文件
etcd無需安裝,下載即可使用
curl -L -o etcd-v3.0.2-linux-amd64.tar.gz
tar xzvf etcd-v3.0.2-linux-amd64.tar.gz
cd etcd-v3.0.2-linux-amd64
./etcd --version
mkdir -p /opt/etcd/bin /opt/etcd/data
./etcd
mkdir /opt/etcd/data
3.1.2 配置ETCD
可參考解壓包裡的官方文件安裝配置ETCD,路徑如下:
more /root/etcd-v3.0.2-linux-amd64/Documentation/demo.md
cat >>/opt/etcd/ku_etcd.sh <<eof </eof<>
#!/bin/bash
etcd_data_dir=/var/lib/etcd/
mkdir -p ${etcd_data_dir}
cat </opt/kubernetes/cfg/etcd.conf
# [member]
ETCD_NAME=default
ETCD_DATA_DIR="${etcd_data_dir}/default.etcd"
ETCD_LISTEN_CLIENT_URLS=""
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.11:2379,http://192.168.1.11:4001"
EOF
3.1.3 開機啟動ETCD
cat </usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
[Service]
ExecStart=/opt/etcd/bin/etcd \
--name etcd-1 \
--initial-advertise-peer-urls http://192.168.1.11:2380 --listen-peer-urls http://192.168.1.11:2380 \
--advertise-client-urls http://192.168.1.11:2379 --listen-client-urls http://192.168.1.11:2379 \
--initial-cluster etcd-1=http://192.168.1.11:2380 \
--initial-cluster-state new --initial-cluster-token token-01
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
3.1.4 檢查ETCD
etcdctl --endpoints=192.168.1.11:2379 member list
etcdctl member list
etcdctl mk key value
etcdctl get key
在其他主機上,驗證遠端連線的正確性,是否可以正確設定和獲取
etcdctl -endpoints http://192.168.1.11:4001 get key
etcdctl -endpoints http://192.168.1.11:4001 mk key2 value2
etcdctl -endpoints http://192.168.1.11:4001 get key2
################# kubernetes ##############################################
wget
mkdir -p /opt/kubernetes/bin
tar xf kubernetes.tar.gz
cd /root/kubernetes/server/
tar xf kubernetes-server-linux-amd64.tar.gz
Master:
cp kubernetes/server/bin/kube* /opt/kubernetes/bin/
minion:
而kubelet,kube-proxy則複製到minion1和minion2
cd /root/kubernetes/server/
scp kubelet kube-proxy* 192.168.1.12:/opt/kubernetes/bin/
scp kubelet kube-proxy* 192.168.1.13:/opt/kubernetes/bin/
3.1.5 配置環境變數
Master配置環境變數:
PATH=$PATH:$HOME/bin:/opt/etcd/bin/:/opt/kubernetes/bin
minion配置環境變數:
PATH=$PATH:$HOME/bin:/opt/kubernetes/bin
驗證版本資訊:
/opt/kubernetes/bin/kubectl version
4 下載KUBERNETES
4.1 下載並解壓
wget
mkdir -p /opt/kubernetes/bin
tar xf kubernetes.tar.gz
cd /root/kubernetes/server/
tar xf kubernetes-server-linux-amd64.tar.gz
4.2 Master節點
複製相關程式到Master節點
cp kubernetes/server/bin/kube* /opt/kubernetes/bin/
4.3 NODE節點
而kubelet,kube-proxy則複製到minion1和minion2
cd /root/kubernetes/server/
scp kubelet kube-proxy* 192.168.1.12:/opt/kubernetes/bin/
scp kubelet kube-proxy* 192.168.1.13:/opt/kubernetes/bin/
5 安裝KUBERNETES的MASTER節點
5.1 安裝APISERVER
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/master/scripts/apiserver.sh
執行apiserver.sh指令碼
cd /root/kubernetes/cluster/centos/master/scripts
sh apiserver.sh “192.168.1.11” "" "10.10.10.0/24"
5.2 安裝controller-manager
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/master/scripts/controller-manager.sh
執行controller-manager.sh腳步
cd /root/kubernetes/cluster/centos/master/scripts/
sh controller-manager.sh 192.168.8.11
5.3 安裝scheduler
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/master/scripts/ scheduler.sh
cd /root/kubernetes/cluster/centos/master/scripts/
sh scheduler.sh 192.168.1.11
6 安裝配置KUBERNETES的NODE節點
6.1 FLANNEL安裝與配置
6.1.1 FLANNEL安裝
wget -c
tar zxvf flannel-0.5.5-linux-amd64.tar.gz
cd flannel-0.5.5-linux-amd64
cp flannel /opt/kubernetes/bin/
6.1.2 FLANNEL配置
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/node/scripts/flannel.sh
Flannel.sh使用到了mk-docker-opts.sh和remove-docker0.sh這兩個檔案在
/root/kubernetes/cluster/centos/node/bin/mk-docker-opts.sh
/root/kubernetes/cluster/centos/node/bin/remove-docker0.sh
複製到/opt/kubernetes/bin/目錄
cp /root/kubernetes/cluster/centos/node/bin/* /opt/kubernetes/bin/
快速配置flannel
sh flannel.sh "http://192.168.1.11:4001" “172.16.18.0/16”
6.2 配置kubelet
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/node/scripts/kubelet.sh
cd /root/kubernetes/cluster/centos/node/scripts
NODE1:
sh kubelet.sh “192.168.1.11” “192.168.1.12”
NODE2:
sh kubelet.sh “192.168.1.11” “192.168.1.13”
說明:192.168.1.11是APISERVER的地址,
192.168.1.12是NODE的IP地址
6.3 配置proxy
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/node/scripts/proxy.sh
cd /root/kubernetes/cluster/centos/node/scripts
NODE1:
sh proxy.sh “192.168.1.11” “192.168.1.12”
NODE2:
sh proxy.sh “192.168.1.11” “192.168.1.13”
說明:192.168.1.11是APISERVER的地址,
192.168.1.12是NODE的IP地址
6.4 配置DOCKER
解壓目錄有官方參考安裝指令碼:
/root/kubernetes/cluster/centos/node/scripts/docker.sh
cd /root/kubernetes/cluster/centos/node/scripts
NODE節點治:
sh docker.sh
至此,kubernetes已安裝完畢
7 使用KUBERNETES
kubernetes
Master:
/opt/kubernetes/bin/kubectl -s 192.168.1.11:8080 create -f tomcat.yaml
檢視:
檢視所有NODE是否正常
kubectl -s 192.168.1.11:8080 get no
kubectl -s 192.168.1.11:8080 describe po tomcat
檢視pod、replication controller、service和endpoint
kubectl -s 192.168.1.11:8080 get po
kubectl -s 192.168.1.11:8080 get rc
kubectl -s 192.168.1.11:8080 get svc
kubectl -s 192.168.1.11:8080 get ep
kubectl get rc,pods
kubectl describe pod tomcat111
kubectl logs tomcat111-3506222467-pnx1l
刪除:
kubectl -s 192.168.1.11:8080 delete -f tomcat.yaml
kubectl get po # 檢視目前所有的pod
kubectl get rs # 檢視目前所有的replica set
kubectl get deployment # 檢視目前所有的deployment
kubectl describe po my-nginx # 檢視my-nginx pod的詳細狀態
kubectl describe rs my-nginx # 檢視my-nginx replica set的詳細狀態
kubectl describe deployment my-nginx # 檢視my-nginx deployment的詳細狀態
kubectl run foo2 --image=hello-world
kubectl delete deployment foo2
kubernetes的監控採用了cAdvisor元件。因為kubernetes中記錄了容器的資訊(但是沒有記錄容器-網路卡的對映關係),所以執行在節點上的cAdvisor不需要透過docker stats去獲取容器的cpu和記憶體使用資料。
而網路IO資料呢?
我們知道k8s部署執行一個容器是會先生成一個pause容器。
是的,網路IO都記錄在pause容器中。這裡大家可以在自己的k8s環境中驗證。
所以只要我們獲取某容器對應的pause容器的containerID,我們就可以用如上的方式去抓到網路IO。
因為cAdvisor並不是為k8s專門設計的,不會特地在獲取網路IO時去遍歷查詢容器對應的pause容器。所以當前的cAdvisor沒有辦法獲取容器的網路IO。
所以如果在使用k8s叢集,想要加入網路IO監控功能的時候,可以從k8s自帶的cAdvisor入手。
問題(1) kubectl get rc,pods 一直處於“ ContainerCreating ”狀態
kubectl get rc,pods
原因:k8s預設從gcr.io/google_containers拉去映象,國內網路無法訪問。
給每個minion下載Google pause映象。之後的工作會用到gcr.io/google_containers/pause映象,
國內使用者由於GFW問題總是會出錯,所以我們先從docker.io下載pause映象,並設定tag。
minion節點:
docker pull kubernetes/pause
docker tag kubernetes/pause gcr.io/google_containers/pause-amd64:3.0
8 使用kubernetes pod複製器
########################## nginx pod複製器 ######################
cat > nginx-rc.yaml <<eof </eof<>
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-controller
spec:
replicas: 2
selector:
name: nginx
template:
metadata:
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
EOF
我們定義了一個nginx pod複製器,複製份數為2,我們使用nginx docker映象。
執行下面的操作建立nginx pod複製器:
kubectl create -f nginx-rc.yaml
kubectl get service
########################## Service ##########################
Service的type有ClusterIP和NodePort之分,預設是ClusterIP,這種型別的Service只能在叢集內部訪問。下表是本文用的配置檔案:
cat >nginx-service-clusterip.yaml <<eof </eof<>
apiVersion: v1
kind: Service
metadata:
name: nginx-service-clusterip
spec:
ports:
- port: 8001
targetPort: 80
protocol: TCP
selector:
name: nginx
EOF
kubectl create -f ./nginx-service-clusterip.yaml services/nginx-service
kubectl get service
kubectl describe service nginx-service-clusterip
############################### #######################
部署外部可訪問的nginx service
下面我們建立NodePort型別的Service,這種型別的Service在叢集外部是可以訪問。下表是本文用的配置檔案:
cat >nginx-service-nodeport.yaml<<eof </eof<>
apiVersion: v1
kind: Service
metadata:
name: nginx-service-nodeport
spec:
ports:
- port: 8000
targetPort: 80
protocol: TCP
type: NodePort
selector:
name: nginx
EOF
kubectl create -f ./nginx-service-nodeport.yaml
kubectl get service
kubectl describe service nginx-service-nodeport
9 SKYDNS
9.1 SKYDNS簡介
SKYDNS 已經被淘汰,建議用KUBE-DNS,請參考下一章節
DNS Server包含3部分:
- skyDNS: 提供DNS解析服務
- etcd:用於skyDNS的儲存
- kube2sky:連線Kubernetes和skyDNS
注意:skydns服務使用的clusterIP需要我們指定一個固定的IP地址,每個Node的Kubelet程式都將使用這個IP地址,不能透過Kubernetes自動分配。
另外,這個IP地址需要在kube-apiserver啟動引數–service-cluster-ip-range指定的IP地址範圍內。
9.2 SKYDNS安裝
(本章節的操作在APISERVER節點下)
可以參考這篇文章配置SKYDNS,也可以使用DOCKER容器的方式部署SKYDNS。
(kube2sky的地址已經不存在,我找了很久也沒找到)
本文使用DOCKER容器的方式部署SKYDNS。
Kubernetes.tar.gz裡有建立SKYDNS的YAML檔案,路徑如下:
cp /root/kubernetes/docs/getting-started-guides/coreos/azure/addons/skydns-rc.yaml /root/script/
cp /root/kubernetes/docs/getting-started-guides/coreos/azure/addons/skydns-svc.yaml /root/script/
cd /root/script/
修改skydns-rc.yaml
kube_master_url=http://192.168.1.11:8080
domain=kube.local
kube_master_url為apiserver的IP
domain為DNS的域名
為DNS服務中設定的域名。
修改skydns-rc.yaml
clusterIP: 10.10.10.100
(DNS的IP)
9.3 NODE節點下載相關映象
在所有的NODE節點下載相關映象(需翻牆下載)
docker pull gcr.io/google_containers/etcd:2.0.9
docker pull gcr.io/google_containers/kube2sky:1.11
docker pull gcr.io/google_containers/skydns:2015-03-11-001
docker pull gcr.io/google_containers/exechealthz:1.0
docker pull gcr.io/google_containers/pause-amd64
備註:gcr.io/google_containers/pause-amd64是kubernetes的基礎映象,必須要下載
9.4 建立DNS的POD和SERVICE
(在APISERVER伺服器上執行)
建立DNS
kubectl create –f skydns-rc.yaml
kubectl create –f kydns-svc.yaml
檢視狀態
kubectl get rc --namespace=kube-system
kubectl get pods --namespace=kube-system
kubectl get services --namespace=kube-system
9.5 NODE節點修改Kubelet服務的啟動引數
修改每臺Node上修改Kubelet服務的啟動引數:
--cluster_dns=10.10.10.100,為DNS服務的ClusterIP地址;
--cluster_domain=cluster.local,為DNS服務中設定的域名。
然後重啟Kubelet服務。
systemctl daemon-reload
systemctl restart kubelet.service
下載測試DNS的busybox映象
docker pull busybox
測試
kubectl exec busybox -- nslookup kube-dns.kube-system
如果解析不成功,可以看看etcd是否有這個DNS的KEY
kubectl exec busybox --namespace=default -- nslookup kube-local.kube-system
docker exec 725470b1d3f5 etcdctl ls /
10 KUBE-DNS
Kubernetes V1.3.x新增了kube-dns來替換skydns,部署相當簡單。
在master主機部署kube-dns步驟:
10.1 新建kube-dns配置檔案
# vi /etc/kubernetes/cfg/kube-dns
# kubernetes kube-dns config
KUBE_DNS_PORT="--dns-port=53"
KUBE_DNS_DOMAIN="--domain=bstk8s.com"
KUBE_DNS_MASTER=--kube-master-url="http://192.168.1.11:8080"
KUBE_DNS_ARGS=""
10.2 新建kube-dns.service配置檔案
# vi /usr/lib/systemd/system/kube-dns.service
[Unit]
Description=Kubernetes Kube-dns Server
Documentation=
After=kube-apiserver.service
Requires=kube-apiserver.service
[Service]
WorkingDirectory=/var/lib/kube-dns
EnvironmentFile=-/etc/kubernetes/cfg/kube-dns
ExecStart=/opt/kubernetes/bin/kube-dns \
$KUBE_DNS_PORT \
$KUBE_DNS_DOMAIN \
$KUBE_DNS_MASTER \
$KUBE_DNS_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
建立目錄
mkdir -p /var/lib/kube-dns
配置service自動啟動
systemctl enable kube-dns
systemctl restart kube-dns
systemctl status kube-dns
10.3 所有Node節點主機修改kubelet檔案
# vi /opt/kubernetes/cfg/kubelet
....
# Add your own!
KUBELET_ARGS="--cluster-dns=192.168.1.11 \
--cluster-domain=bstk8s.com"
10.4 修改resolv.conf,新增域名解析伺服器地址
[root@k8s-master ~]# vi /etc/resolv.conf
# Generated by NetworkManager
search default.svc.bstk8s.com svc.bstk8s.com bstk8s.com
nameserver 192.168.1.11
nameserver 8.8.8.8
nameserver 114.114.114.114
10.5 DNS測試
檢視所有service
kubectl get svc --all-namespaces
kubectl exec busybox -- nslookup kube-system
如果解析不成功,可以看看etcd是否有這個DNS的KEY
在ETCD所在主機上:
etcdctl ls /
11 cAdvisor
Google的 cAdvisor 是另一個知名的開源容器監控工具。
只需在宿主機上部署cAdvisor容器,使用者就可透過Web介面或REST服務訪問當前節點和容器的效能資料(CPU、記憶體、網路、磁碟、檔案系統等等),非常詳細。
預設cAdvisor是將資料快取在記憶體中,資料展示能力有限;它也提供不同的持久化儲存後端支援,可以將監控資料儲存、彙總到Google BigQuery、InfluxDB或者Redis之上。
新的Kubernetes版本里,cadvior功能已經被整合到了kubelet元件中
需要注意的是,cadvisor的web介面,只能看到單前物理機上容器的資訊,其他機器是需要訪問對應ip的url,數量少時,很有效果,當數量多時,比較麻煩,所以需要把cadvisor的資料進行彙總、展示,就看“cadvisor+influxdb+grafana”
Cadvisor,只需要 在kubelet命令中,啟用Cadvisor,和配置相關資訊 ,即可
(1)在/opt/kubernetes/cfg/kubelet 加入如下 引數:
CADVISOR=' --cadvisor-port=4194 --storage-driver-db="cadvisor" --storage-driver-host="localhost:8086"'
(2)修改/usr/lib/systemd/system/kubelet.service
在ExecStart=xxx 後面加上${CADVISOR}
(3)重啟kubelet
systemctl daemon-reload
systemctl restart kubelet.service
(4)訪問http://192.168.1.12:4194/
12 K8S-WEB工具kubernetes-dashboard
kubernetes-dashboard 是一個WEB工具,可以對kubernates資源(POD、SERVICE、RC)進行增刪改查:
增:新建(分填寫的和上傳json或yaml的),上傳的方式,等同於kubectl create -f
刪:刪除副本(replicationcontrollers)
改:修改副本數
查:查詢相關資訊,同kubectl get命令
MASTER要安裝flannel,請引數“FLANNEL安裝與配置”章節
從kubernetes.tar.gz解壓目錄的如下路徑複製YAML檔案:
/root/kubernetes/cluster/addons/dashboard/dashboard-controller.yaml
/root/kubernetes/cluster/addons/dashboard/dashboard-service.yaml
修改dashboard-controller.yaml ,增加兩行
ports:
- containerPort: 9090
args: (加上這兩行)
- --apiserver-host=http://192.168.1.11:8080(加上這兩行)
kubectl create -f dashboard-controller.yaml
kubectl create -f dashboard-service.yaml
http://192.168.1.11:8080/ui (192.168.1.11是Master節點)
13 叢集監控Heapster+Influxdb+grafana
Heapster當前版本需使用https安全方式與master連線,
13.1 master主機建立證照並應用
mkdir key
cd key/
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=master.k8s.com" -days 5000 -out ca.crt
openssl genrsa -out server.key 2048
more /etc/hostname
docker1
openssl req -new -key server.key -subj "/CN=docker1" -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 5000
[root@k8s_master key]# ll
total 24
-rw-r--r-- 1 root root 1107 Apr 17 17:25 ca.crt
-rw-r--r-- 1 root root 1679 Apr 17 17:23 ca.key
-rw-r--r-- 1 root root 17 Apr 17 17:29 ca.srl
-rw-r--r-- 1 root root 985 Apr 17 17:29 server.crt
-rw-r--r-- 1 root root 891 Apr 17 17:27 server.csr
-rw-r--r-- 1 root root 1675 Apr 17 17:26 server.key
生成6個檔案,複製至/var/run/kubernetes/
[root@k8s_master key]# cp *.* /var/run/kubernetes/
[root@k8s_master key]# ll /var/run/kubernetes/
total 32
-rw-r--r-- 1 kube kube 1200 Apr 17 11:43 apiserver.crt
-rw------- 1 kube kube 1675 Apr 17 11:43 apiserver.key
-rw-r--r-- 1 root root 1107 Apr 17 17:39 ca.crt
-rw-r--r-- 1 root root 1679 Apr 17 17:39 ca.key
-rw-r--r-- 1 root root 17 Apr 17 17:39 ca.srl
-rw-r--r-- 1 root root 985 Apr 17 17:39 server.crt
-rw-r--r-- 1 root root 891 Apr 17 17:39 server.csr
-rw-r--r-- 1 root root 1675 Apr 17 17:39 server.key
修改apiserer的配置檔案
vi apiserver
.....
# default admission control policies
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
# Add your own!
KUBE_API_ARGS="--client-ca-file=/var/run/kubernetes/ca.crt \
--tls-private-key-file=/var/run/kubernetes/server.key \
--tls-cert-file=/var/run/kubernetes/server.crt"
說明:
--client-ca-file:根證照檔案
--tls-cert-file:服務端證照檔案
--tls-private-key-file:服務端私鑰檔案
重啟apiserver服務
[root@k8s_master kubernetes]# systemctl restart kube-apiserver
[root@k8s_master kubernetes]# systemctl status kube-apiserver
修改controller-manager服務引數
vi controller-manager
# Add your own!
KUBE_CONTROLLER_MANAGER_ARGS="--service-account-private-key-file=/var/run/kubernetes/apiserver.key \
--root-ca-file=/var/run/kubernetes/ca.crt"
重啟controller-manager服務
systemctl restart kube-controller-manager
systemctl status kube-controller-manager
kubectl get serviceaccounts --all-namespaces
kubectl get secrets --all-namespaces
kubectl describe secret default-token-2d412
檢視容器證照:
kubectl exec -ti frontend-z7021 ls /var/run/secrets/kubernetes.io/serviceaccount
13.2 部署Influxdb+grafana
我們使用已搭建好的環境(192.168.1.11)
登陸192.168.1.11,新建資料庫k8s
實施步驟:
13.2.1 部署influxdb
cat <<eof |="" sudo="" tee="" etc="" yum.repos.d="" influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = \$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey =
EOF
yum install -y influxdb
systemctl enable influxdb
systemctl start influxdb
systemctl status influxdb
檢視配置檔案:
rpm -qc influxdb
vi /etc/influxdb/influxdb.conf
hostname = "192.168.1.11"
檢視influxdb啟動埠(8091,8083,8086,8088)
netstat -nltp
進入influx命令列
influx
SHOW DATABASES
CREATE DATABASE k8sdb
use k8sdb
CREATE USER "root" WITH PASSWORD 'root123' WITH ALL PRIVILEGES
show user
INSERT cpu,host=test,region=us_west value=0.64
SELECT * FROM /.*/ LIMIT 1
13.2.2 部署grafana
cd /usr/src
grafana-2.6.0 不支援influx-0.13,需要 grafana-3.0以上
(Because of the changes to the SHOW SERIES and SHOW TAG VALUES formats in InfluxDB 0.11, InfluxDB 0.13 will not work with the Query Editor in Grafana 2.6.)
yum install
檢視配置檔案
rpm -qc grafana
systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server
檢視啟動埠(3000)
netstat -nltp
瀏覽器開啟,
http://192.168.1.11:3000
預設admin/admin
新增data source:填寫influxdb版本,ip,埠,使用者名稱密碼;測試資料庫名,使用者名稱密碼;並進行連線測試。
參考文件:
--------------------
Name :k8sdb Default
Type :InfluxDB 0.9x
Http settings
Url :http://192.168.1.11:8086
Access :proxy
Http Auth: Basic Auth
User :admin
Password: admin
InfluxDB Details
Database :k8s
User :root
Password :root
新建bashborad,並儲存(根據過濾條件可以查到之前新增的一套資料)
定義要監控的資訊,首先點選grafana的UI介面的左邊的Dashboards按鈕,
然後點選New按鈕,此時將會在Dashboards的旁邊出現一個綠色圖示,
移動滑鼠到該圖示上,將會有一系列表展現出來,這時選擇Add Panel然後在選擇Graph。
Dashboards-->new-->add panel -->graph --->panel data source --> select
13.3 配置heapster容器
vi heapster-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: heapster
labels:
name: heapster
spec:
replicas: 1
selector:
name: heapster
template:
metadata:
labels:
name: heapster
spec:
containers:
- name: heapster
image: gcr.io/google_containers/heapster:v1.1.0
command:
- /heapster
- --source=kubernetes:http://192.168.1.11:8080?inClusterConfig=false&kubeletHttps=true&kubeletPort=10250&useServiceAccount=true&auth=
- --sink=influxdb:http://192.168.1.11:8086
建立pod
kubectl create -f heapster-controller.yaml
kubectl get pods
kubectl logs heapster-g5ik1
14 附錄1
14.1 Flannel 引數(所有節點)
/opt/kubernetes/bin/flanneld --ip-masq -etcd-endpoints=http://192.168.1.11:4001 -etcd-prefix=/coreos.com/network
14.2 kube-apiserve引數(MASTER節點)
/opt/kubernetes/bin/kube-apiserver --logtostderr=true --v=4 --etcd-servers=http://192.168.1.11:4001 --insecure-bind-address=0.0.0.0 --insecure-port=8080 --kubelet-port=10250 --advertise-address=192.168.1.11 --allow-privileged=false --service-cluster-ip-range=10.10.10.0/24 --admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota --client-ca-file=/var/run/kubernetes/ca.crt --tls-private-key-file=/var/run/kubernetes/server.key --tls-cert-file=/var/run/kubernetes/server.crt
14.3 kube-controller-manager引數(MASTER節點)
/opt/kubernetes/bin/kube-controller-manager --logtostderr=true --v=4 --master=192.168.1.11:8080 --service-account-private-key-file=/var/run/kubernetes/apiserver.key
14.4 kube-scheduler 引數(MASTER節點)
/opt/kubernetes/bin/kube-scheduler --logtostderr=true --v=4 --master=192.168.1.11:8080 --log-dir=/tmp/kube-scheduler.log
14.5 kube-dns引數(MASTER節點)
/opt/kubernetes/bin/kube-dns --dns-port=53 --domain=bstk8s.com --kube-master-url=http://192.168.1.11:8080
14.6 kube-proxy 引數(NODE節點)
/opt/kubernetes/bin/kube-proxy --logtostderr=true --v=4 --hostname-override=192.168.1.12 --master=http://192.168.1.11:8080
14.7 Kubelet 引數(NODE節點)
/opt/kubernetes/bin/kubelet --logtostderr=true --v=4 --address=192.168.1.12 --port=10250 --hostname-override=192.168.1.12 --api-servers=192.168.1.11:8080 --allow-privileged=false --cluster_dns=192.168.1.11 --cluster_domain=bstk8s.com --cadvisor-port=4194 --storage-driver-db="cadvisor" --storage-driver-host="localhost:8086"
15 附錄2
相關部署指令碼和YAML檔案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10995764/viewspace-2124022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- K8S安裝K8S
- k8s Docker 安裝K8SDocker
- MacOS 安裝k8sMacK8S
- k8s安裝nginxK8SNginx
- k8s解除安裝K8S
- Vm 安裝Centos 配合xshell安裝K8sCentOSK8S
- kubeadm安裝k8sK8S
- k8s安裝jenkinsK8SJenkins
- k8s叢集安裝-kubeadm安裝K8S
- k8s 中安裝 jenkinsK8SJenkins
- k8s安裝traefik ingressK8S
- 安裝k8s 1.18版K8S
- Ubuntu 安裝k8s叢集UbuntuK8S
- centos安裝k8s叢集CentOSK8S
- ubuntu安裝docker及k8sUbuntuDockerK8S
- kubeadm安裝k8s 1.23.5K8S
- k8s的安裝及使用(三)K8S
- Kubernetes(K8S) kubesphere 安裝K8S
- K8s kubernetes安裝部署K8S
- k8s的安裝與啟動K8S
- k8s 安裝xxl-jobK8S
- 二進位制方式安裝 k8sK8S
- 4.2 K8S超級完整安裝配置K8S
- 【K8S】基於單Master節點安裝K8S叢集K8SAST
- 二進位制安裝k8s高可用叢集(七):安裝外掛K8S
- 最新的 k8s v1.23.5安裝K8S
- k8s第二回之k8s叢集的安裝K8S
- 2019安裝k8s詳細教程K8S
- K8s(Kubernetes)簡介及安裝部署K8S
- 極速安裝和體驗k8s(Minikube)K8S
- k8s安裝nginx-ingress-controllerK8SNginxController
- K8S使用Helm安裝RabbitMQ和Redis的總結K8SMQRedis
- Ubuntu 安裝 k8s 三駕馬車 kubelet kubeadm kubectlUbuntuK8S
- 從零開始基於Archlinux 安裝 containerd + k8sLinuxAIK8S
- 用 edgeadm 一鍵安裝邊緣 K8s 叢集和原生 K8s 叢集K8S
- 二進位制安裝Kubernetes(k8s)v1.28.3K8S
- 【K8S 系列】k8s 學習二,kubernetes 核心概念及初步瞭解安裝部署方式K8S
- [K8S 系列]k8s 學習二,kubernetes 核心概念及初步瞭解安裝部署方式K8S