Kubernetes学习整理
修改镜像仓库
官方提供的时google源,显然是无法使用的。这里需要改成国内的源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 EOF
一些重要特性
从1.8 开始,k8s原生支持Spark
通过cron job处理机器学习、大数据和其他高级计算负载也是一个好途径
1.8 alpha版特性:
优先级(资源有限时的优雅降级)
1.6引入了节点自动污点标记:让某节点不参与资源调度
K8S编排文件
pod pod.yaml
apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
ReplicationController rc.yaml
apiVersion: v1 kind: ReplicationController metadata: name: nginx spec: replicas: 3 selector: app: nginx template: metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
service src.yaml
apiVersion: v1 kind: Service metadata: labels: name: rabbitmq name: rabbitmq-service spec: ports: - port: 5672 selector: app: taskQueue component: rabbitmq
负载均衡服务 loadbalance.yaml
apiVersion: v1 kind: Service metadata: labels: name: flower name: flower-service spec: ports: - port: 5555 selector: app: taskQueue component: flower type: LoadBalancer
kubectl使用
获取某版本的kubectl(更改粗体部分的版本号即可)
wget https://storage.googleapis.com/kubernetes-release/release/v1.7.5/bin/linux/amd64/kubectl
namespace的使用
使用kubectl 时,默认的namespace是default,如果要查看所有或某个namespace下的资源,需要特殊指定
kubectl get service --all-namespaces
kubectl get rc --namespace testGroup
扩容
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT RESOURCE
滚动升级 (可回滚 命令 --rollback)
kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [options]
//例:
kubectl rolling-update nginx --image=nginx:v2
迁移镜像(将某节点的某些镜像移动到其他节点并加载)
1.makeManifest.sh 作用是生成镜像清单文件 manifest.txt,然后根据需要 保留要迁移的镜像列表
targetFile=./manifest.txt echo '' > $targetFile IFS=" " index=0 docker images | awk '{print $1,$2}'|while read line do if [ $index -gt 0 ] then arr=($line) if [[ "<none>" != ${arr[0]} && "<none>" != ${arr[1]} ]] then echo ${arr[0]}":"${arr[1]} >> $targetFile fi fi index=1 done
2.saveImages.sh 作用是根据清单下载镜像,并生成镜像加载脚本loadImage.sh
targetFile=./manifest.txt loadFile=./loadImage.sh echo "" > $loadFile cat $targetFile|while read line do docker save $line > ./${line////_}.tar echo "docker load < ${line////_}.tar" >> $loadFile done
3.将loadImage.sh和下载的镜像移动到目标节点的同一路径下并执行loadImage.sh即可