當前最流行的開源容器集羣調度方案,實現自動化部署,擴容,維護等功能node
Service對象類型linux
端口類別:docker
從簡單到複雜能夠分紅三類後端
基於插件形式實現,擴展性強centos
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
如下內容寫入/init_minikube.sh
並賦予可執行權限api
#!/bin/bash export MINIKUBE_WANTUPDATENOTIFICATION=false export MINIKUBE_WANTREPORTERRORPROMPT=false export MINIKUBE_HOME=$HOME export CHANGE_MINIKUBE_NONE_USER=true export KUBECONFIG=$HOME/.kube/config mkdir -p $HOME/.kube && touch $HOME/.kube/config minikube start --vm-driver=none #將k8s集羣經過none驅動模式直接裝入宿主機
sudo su - #none驅動模式安裝minkube要求使用root帳號去管理操做 /init_minikube.sh minikube dashboard --url #默認在30000端口開放k8s管理界面 minikube service frontend --url #指定服務的地址 #插件管理 minikube addons list minikube addons enable 插件名
minikube logs
檢查錯誤日誌gcr.io/google_containers/pause-amd64
等鏡像是否成功下載#管理命令(資源類型:nodes、pods、deployments、events、service、ing、all) kubectl version kubectl cluster-info #顯示集羣信息 kubectl get 資源類型 [-l label鍵=label值] [-n 名字空間 / --all-namespaces] #羅列工做節點 kubectl config view #查看配置 kubectl describe 資源類型 #資源詳情 kubectl logs 資源名 #容器打印日誌 kubectl label 資源類型 資源名 label鍵=label值 #打標籤 #經常使用命令 kubectl get pod -o wide/yaml #檢查pod所在節點 kubectl get services 服務名 -o yaml #檢查服務詳情 kubectl delete pod --grace-period=0 --force pod名 #當即強制刪除pod #容器執行命令 kubectl exec -ti Pod名 [-c 容器名] -- 命令 kubectl exec Pod名 [-c 容器名] -- 命令 #configmap管理 kubectl create configmap 配置名 --from-file=配置文件路徑 kubectl get configmap 配置名 -o yaml #建立deployment部署一個應用到Pod kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> #安裝registry憑據 方法1:kubectl run 部署名 --image=鏡像地址 --port=8080 --replicas=副本數 --labels="key=value" 方法2:kubectl create|apply -f deployment.yaml kubectl get deployments kubectl get pods #更新應用 kubectl set image deployments/部署名 部署名=鏡像地址 kubectl rollout status deployments/部署名 #查看更新狀態 #回滾應用 kubectl rollout undo deployments/部署名 #應用伸縮 kubectl scale deployments/部署名 --replicas=副本數 #開放pod服務爲service kubectl expose deployment/部署名 --name=服務名 --type=NodePort|LoadBalancer--port 端口號 kubectl get services #可查看服務開放地址 #下線服務 kubectl delete service -l label鍵=label值 kubectl delete deployment -l label鍵=label值 #禁止非worker節點調度運行POD kubectl taint node 節點名 node-role.kubernetes.io/節點名="":NoSchedule
防火牆開放端口bash
開啓IPV4路由轉發(CentOS 7.4+沒必要此操做)網絡
#/etc/sysctl.conf追加一行 net.ipv4.ip_forward = 1
Docker準備app
v17.03-ce
sudo yum install -y --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos docker-ce-selinux-17.03.2.ce-1.el7.centos
HTTPS證書準備負載均衡
docker run -it --rm -p 443:443 -p 80:80 --name certbot \ -v "/etc/letsencrypt:/etc/letsencrypt" \ -v "/var/lib/letsencrypt:/var/lib/letsencrypt" \ certbot/certbot certonly -n -v --standalone --agree-tos --email=admin@rancher.example.com -d rancher.example.com cd /etc/letsencrypt sudo ln -s live/rancher.example.com/fullchain.pem cert.pem sudo ln -s live/rancher.example.com/privkey.pem key.pem
節點機調整
# hostname要求符合以下正則 `'[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'` sudo hostnamectl set-hostname k8s-worker-1.cluster-a sudo hostnamectl status
Compose編排服務
version: '2' services: Rancher: image: rancher/server:preview container_name: rancher hostname: rancher restart: always ports: - '8443:8443' - '8080:8080' volumes: - /srv/rancher:/var/lib/rancher - /etc/letsencrypt:/etc/rancher/ssl entrypoint: rancher --http-listen-port=8080 --https-listen-port=8443 command: --acme-domain rancher.example.com
啓動服務
docker pull rancher/server:preview docker-compose up -d Rancher docker logs -f rancher #跟進rancher初始化狀態
admin:admin
#### #RancherServer調試 docker logs -f rancher #K8sNode調試 journalctl -xf -u docker docker logs kubelet