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即可

 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/TiestoRay/p/7867458.html