手動安裝Kubernetes(二)啟動服務
本文適合完全沒有基礎的新手,指令只要複製、貼上即可運作
環境:
- Ubuntu 16.04
- Kubernetes 1.6
- Docker 1.12.6
接續上文
再來就把binary複製到對應的目錄
這是不分master, minions的懶人複製法
MASTER
--------------------------------------------------------------------
- 建立憑證(Master)
複製以下內容
*${cluster_ip} :
輸入 :
接著執行
- 下一步,啟動daemons(Master)
使用vxlan的架構
${1}是master ip
- 網路設定(Master/Minions)
有點複雜,請一步步跟著做
先用ifconfig,確認docker0是否有ip
如果不知道怎麼確認,照這個key
啟動flannel
然後,去找flannel的subnet
記得上一篇有個還沒設定的<FLANNEL_SUBNET> 嗎?以這個例子就是填入192.168.74.1/24
接下來就輕鬆啦,把各個daemon啟動就好了
可以去確認process有沒有都跑起來
MINION/NODE
--------------------------------------------------------------------
- 啟動daemons
接下來,一樣是flannel網路設定,請參照上一段
然後就把daemons叫起來就好囉!
可以去確認process有沒有都跑起來
--------------------------------------------------------------------
安裝完後,在master上執行 kubectl get node 就可以看到node的資訊,如果找不到kubectl這個指令,那就是環境變數沒有設定好,直接執行
應該可以看到類似這樣:
Trouble shooting...
一般來說都是網路上的設定出了問題(眼殘或手殘 XD), 可以藉由系統log來找問題
或是
在kubernetes主體的log,在設定檔有指向/var/log/kubernetes,所以可以進來找,例如,下面是去找kube-apiserver的error log
幾個常用的kubectl指令
眼尖的朋友應該有注意到,上篇設定檔中,很多用${1}的地方,其實這都是從我寫的shell script中複製下來的,所以這兩篇的內容,其實都可以直接複製下來,寫成一個script,之後就不用一個個在那邊vim....
環境:
- Ubuntu 16.04
- Kubernetes 1.6
- Docker 1.12.6
接續上文
再來就把binary複製到對應的目錄
cp ~/kube-bin/* /opt/bin/
cp ~/kube-bin/kubectl /usr/local/bin/
chmod 744 -R /opt/bin/
chmod 744 -R /usr/local/bin/
export PATH=$PATH:/opt/bin
MASTER
--------------------------------------------------------------------
- 建立憑證(Master)
vim /srv/kubernetes/openssl.conf
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
#List of Subject Alternate Names the server will be known as - list out short and FQDN versions
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = huff-kubmst01
DNS.6 = huff-kubmst01.huffnet.org
DNS.7 = kubmst01
DNS.8 = kubmst01.huffnet.org
IP.1 = ${cluster_ip}
#it's kubernetes cluster ip NOT master ip
#Add more IPs if your server will serve on multiple IPs like IP.2, IP.3, etc
輸入 :
kubectl get svc
就可以得到service的cluster ip
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 172.112.0.1 <none> 443/TCP 2m
接著執行
cd /srv/kubernetes
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=kubernetes" -days 10000 -out ca.crt -config openssl.conf
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN='kubernetes'" -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.cert -days 10000 -extensions v3_req -extfile openssl.conf
- 下一步,啟動daemons(Master)
systemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl enable flanneld.service
systemctl enable etcd.service
systemctl start etcd.service
使用vxlan的架構
/opt/bin/etcdctl --endpoints="http://${1}:2379" mk /coreos.com/network/config '{"Network":"192.128.0.0/16", "Backend": {"Type": "vxlan"}}'
- 網路設定(Master/Minions)
有點複雜,請一步步跟著做
先用ifconfig,確認docker0是否有ip
ifconfig
ifconfig docker0 0
啟動flannel
systemctl start flanneld
然後,去找flannel的subnet
ifconfig
flannel.1
Link encap:Ethernet HWaddr 96:c1:3e:c2:89:90
inet addr:192.112.74.0 Bcast:0.0.0.0 Mask:255.255.0.0
. . . .
接下來就輕鬆啦,把各個daemon啟動就好了
systemctl daemon-reload
systemctl restart docker.service
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
可以去確認process有沒有都跑起來
ps aux | grep kube
MINION/NODE
--------------------------------------------------------------------
- 啟動daemons
systemctl enable kubelet.service
systemctl enable kube-proxy.service
systemctl enable flanneld.service
systemctl enable docker.service
接下來,一樣是flannel網路設定,請參照上一段
然後就把daemons叫起來就好囉!
systemctl daemon-reload
systemctl restart docker.service
systemctl start kubelet.service
systemctl start kube-proxy.service
可以去確認process有沒有都跑起來
ps aux | grep kube
--------------------------------------------------------------------
安裝完後,在master上執行 kubectl get node 就可以看到node的資訊,如果找不到kubectl這個指令,那就是環境變數沒有設定好,直接執行
/usr/local/bin/kubectl get node
應該可以看到類似這樣:
NAME STATUS AGE VERSION
10.62.112.11 Ready 1m v1.6.0
Trouble shooting...
一般來說都是網路上的設定出了問題(眼殘或手殘 XD), 可以藉由系統log來找問題
tail -f /var/log/syslog -n 100
在kubernetes主體的log,在設定檔有指向/var/log/kubernetes,所以可以進來找,例如,下面是去找kube-apiserver的error log
tail -f /var/log/kubernetes/kube-apiserver.ERROR -n 100
幾個常用的kubectl指令
kubectl get node --> 取得node 資訊
kubectl get po --> 取得pod 資訊
kubectl get svc --namespace=kube-system --> 取得在namespace=kube-system中service的資訊
kubectl get po --all-namespaces -->取得所有namespace的pod資訊
kubectl get po --> 取得pod 資訊
kubectl get svc --namespace=kube-system --> 取得在namespace=kube-system中service的資訊
kubectl get po --all-namespaces -->取得所有namespace的pod資訊
眼尖的朋友應該有注意到,上篇設定檔中,很多用${1}的地方,其實這都是從我寫的shell script中複製下來的,所以這兩篇的內容,其實都可以直接複製下來,寫成一個script,之後就不用一個個在那邊vim....
留言
張貼留言