kubernetes 的一些博客和资料收集

当作一个todolist吧,需要把下面的资料和博客都看一遍。

目前看的博文最多的是 cloudman6 和 jimmysong


kubernetes storage入门

这篇文章记录如何使用 kubernetes 的存储资源,包括volume、pv&pvc等。

一、Volume

Volume 的生命周期独立于容器,Pod 中的容器可能被销毁和重建,但 Volume 会被保留。

Volume 提供了对各种 backend 的抽象,容器在使用 Volume 读写数据的时候不需要关心数据到底是存放在本地节点的文件系统还是云硬盘上。对它来说,所有类型的 Volume 都只是一个目录。

1. emptyDir

最基础的 Volume 类型。

emptyDir Volume 的生命周期与 Pod 一致。对于容器来说是持久的,对于 Pod 则不是。当 Pod 从节点删除时,Volume 的内容也会被删除。但如果只是容器被销毁而 Pod 还在,则 Volume 不受影响。Pod 中的所有容器都可以共享 Volume,它们可以指定各自的 mount 路径。

根据这个特性,emptyDir 特别适合 Pod 中的容器需要临时共享存储空间的场景。


kubernetes 安装入门(centos)

这篇文章记录如何使用 kubeadm 安装 kubernetes。

目前官方推荐使用这种方法安装上测试环境,暂时不建议上生产环境。

环境配置

  1. 安装docker

    curl -sSL https://get.docker.com/ | sh
    usermod -aG docker $USER
    systemctl enable docker
    systemctl start docker
    
  2. 关闭系统防火墙

    systemctl stop firewalld && systemctl disable firewalld
    
  3. 关闭SElinux

    $ setenforce 0 (临时关闭)
    $ vi /etc/selinux/config (长久关闭)
    SELINUX=disabled
    
  4. 关闭系统交换区(出于k8s的性能考虑)

    不关闭临时分区的话参考后文,k8s初始化时修改配置文件即可。

    (临时)
    $ swapoff -a && sysctl -w vm.swappiness=0
    
    (长久)
    $ swapoff -a && cat >> /etc/sysctl.conf << EOF 
    vm.swappiness=0
    EOF
    
    $ sysctl -p
    
  5. 配置系统内核参数使流过网桥的流量也进入iptables/netfilter框架中:

    $ cat >> /etc/sysctl.conf<< EOF
    net.ipv4.ip_forward= 1
    net.bridge.bridge-nf-call-ip6tables= 1
    net.bridge.bridge-nf-call-iptables= 1
    EOF
    
    $ sysctl -p
    
  6. 重启docker和daemon

    systemctl daemon-reload
    systemctl restart docker
    

安装

  1. 配置阿里K8S YUM源

     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
    
     yum -y install epel-release
     yum clean all
     yum makecache
    

CentOS 7 使用代理服务器

这篇文章记录如何在 CentOS 7 下使用代理服务器,以此在国内服务器下载 k8s 的镜像,例如<k8s.gcr.io/defaultbackend:1.3>

代理客户端

代理客户端用来连接本地与服务器。

  1. 安装

    sudo yum -y install epel-release
    sudo yum -y install python-pip
    sudo pip install shadowsocks
    
  2. 配置

    sudo mkdir -p /etc/shadowsocks
    sudo vi /etc/shadowsocks/shadowsocks.json
    

    配置信息如下:

    {
        "server":"x.x.x.x",  # 服务器地址
        "server_port":1035,  # 服务器端口
        "local_address": "127.0.0.1", # 本地IP
        "local_port":1080,  # 本地端口
        "password":"password", # 连接密码
        "timeout":300,  # 等待超时时间
        "method":"aes-256-cfb",  # 加密方式
        "fast_open": false,  # true或false。开启fast_open以降低延迟,但要求Linux内核在3.7+
        "workers": 1  #工作线程数 
    }
    
  3. 自启动

    新建脚本

    touch /etc/systemd/system/shadowsocks.service
    # vi /etc/systemd/system/shadowsocks.service
    
    [Unit]
    Description=Shadowsocks
    [Service]
    TimeoutStartSec=0
    ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json
    [Install]
    WantedBy=multi-user.target
    
  4. 启动Shadowsocks

    systemctl enable shadowsocks.service
    systemctl start shadowsocks.service
    systemctl status shadowsocks.service
    
  5. 验证运行状况

    curl --socks5 127.0.0.1:1080 -i http://ip.cn
    

    将会显示ip的具体位置。


容器化 nfs 服务器安装

这篇文章记录如何安装和使用容器化的nfs,目前只是临时使用验证某个服务,只记录安装使用过程,不做过多描述。

什么是 nfs

它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。

NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。一般用来存储共享视频,图片等静态数据。