当前最流行的开源容器集群调度方案,实现自动化部署,扩容,维护等功能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