# 啟動etcd存儲服務
service etcd start
# 運行master
cd /opt/kubernetes/bin
./apiserver.sh 192.168.220.135 http://192.168.220.135:2379
./scheduler.sh 192.168.220.135
./controller-manager.sh 192.168.220.135
# 運行node(需要先禁用swap交換緩存,運行命令 swapoff -a)
cd /opt/kubernetes/bin
./kubelet.sh 192.168.220.138 192.168.220.139 10.10.10.2
./proxy.sh 192.168.220.135 192.168.220.136
# node 節點日志
tail -f /var/log/messages
# 查看集群狀態
kubectl get node
kubectl get componentstatus
# 查看集群所有信息
kubectl get all
# 查看nginx服務所在docke容器節點,一個服務也是一個負載均衡
kubectl get ep nginx
# 命令行管理對象實例
# 1.基於nginx鏡像,創建hello-world pod
kubectl run hello-world --replicas=1 --labels="app=example" --image=nginx:latest --port=80
# 2.以上命令會自動創建rs,查看rs
kubectl get rs
kubectl describe rs rs_name
# 3.以上命令會自動創建deployment,deployment負責管理rs和pod
kubectl describe deploy/hello-world
kubectl edit deploy hello-world
# 4.聲明服務
kubectl expose deployment hello-world --port=88 --target-port=80 --name=example-service
kubectl get mvc
# pod擴容
kubectl sacle deployment --replicas=10 hello-world
# pod刪除,pod不能直接刪除否則還會重新創建,需要刪除pod的控制器
kubectl delete deployment hello-world
# pod日志實時查看
kubectl logs -f pod/hello-world-cc85df
# 查看pod里面容器的日志
kubectl logs pod-test -c hello-write
# 查看容pod里面容器的環境變量
exec nginx-deployment-5b4b59b4b8-ktxcx env
# pod中鏡像升級
kubectl set image deploy/nginx-deployment nginx=nginx:1.11
#實時觀察升級發布狀態:滾動升級,殺掉一個pod,升級一個pod然后再啟動該pod。接着再殺掉一個pod。。。
kubectl rollout status deployment/nginx-deployment
#查看deployment歷史修訂版本
kubectl rollout history deployment/nginx-deployment
# docker鏡像暴力刪除
rm -rf /var/lib/docker
# 鏡像加速器(docker17.05 以上版本執行)
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8ca15b27.m.daocloud.io
# 支持三種策略:
Always:當容器終止退出后,總是重啟容器,默認策略。
OnFailure:當容器異常退出(退出狀態碼非0)時,才重啟容器。
Never:當容器終止退出,從不重啟容器。
# 進入pod
kubectl exec pod-test -it bash
# 進入pod中的容器運行命令以及排錯
kubectl exec pod-test -c hello-world -it bash
# 替換pod
kubectl replace -f pod.yaml --force
# 指定命名空間查看pod
kubectl get pods --namespace=kube-system
# 創建flanneld.service
[Unit]
Description=flanneld overlay address etcd agent
After=network.target
Before=docker.service
[Service]
Type=notify
ExecStart=/usr/bin/flanneld -etcd-endpoints=http://192.168.220.138:2379
[Install]
RequiredBy=docker.service
WantedBy=multi-user.target
# 啟動flanneld 【http://time-track.cn/deploy-kubernetes-step-by-step-on-trusty-section-2.html】
systemctl restart flanneld.service
# 查看flanneld使用的網段
cat /run/flannel/subnet.env
# 讓docker在自己的docker0上面使用自定義網段
Node➜ ~ cat /etc/systemd/system/docker.service.d/docker.conf
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --bip=10.1.48.1/24 --mtu=1472
# 進入容器測試
docker run -it busybox sh
# 截獲本機和其他主機的通信
tcpdump host 192.168.220.138 and 192.168.220.139
# 截獲主機80端口發出和接收的http數據包
tcpdump tcp port 80 and host 192.168.220.138
# 查詢etcd 數據
etcdctl ls /coreos.com/network/subnets