设为首页 加入收藏

TOP

本机搭建三节点k8s集群(二)
2018-11-19 22:12:57 】 浏览:404
Tags:搭建 三节点 k8s 集群
Environment="NO_PROXY=localhost,127.0.0.1,localaddress,.localdomain.com" EOF systemctl daemon-reload systemctl restart docker
  • 测试配置
docker info | grep Proxy  # 有输出说明配置成功

docker pull gcr.io/google-containers/busybox:1.27 # pull 成功代表工作正常。

安装 kube* 组件

  • 三台都装
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
  • Master 节点配置 cgroup driver
docker info | grep -i cgroup  # 一般是 cgroupfs
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf  # --cgroup-driver 对应值默认是 systemd

#两个值不一致的话使用以下命令修改
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

#重启 kubelet
systemctl daemon-reload
systemctl restart kubelet
  • curl 访问的是墙外的网站,无法访问的话可以配置系统代理。

http://192.168.99.1:8118/ 是我本地使用的 HTTP 代理,Privoxy 监听 8118 端口,按照实际情况修改该地址。

# 全局代理,不推荐
cat <<EOF >>/etc/environment
http_proxy="http://192.168.99.1:8118/"
https_proxy="http://192.168.99.1:8118/"
no_proxy="master, node1, node2, 192.168.99.1"
EOF
source /etc/environment

#当前 shell,推荐
export http_proxy="http://192.168.99.1:8118/"
export https_proxy="http://192.168.99.1:8118/"
export no_proxy="master, node1, node2, 192.168.99.1"
  • apt 使用代理
cat <<EOF >>/etc/apt/apt.conf
Acquire::http::Proxy "http://192.168.99.1:8118/";
Acquire::https::Proxy "https://192.168.99.1:8118/";
EOF

搭建集群

禁用交换区

k8s 文档明确要求的。

  • 三台都禁用
swapoff -a

初始化 master 节点

  • 初始化过程会访问墙外网站,如果 init 不能顺利执行,请配置全局代理
kubeadm init --apiserver-advertise-address=192.168.99.200 --pod-network-cidr=10.244.0.0/16
  1. --apiserver-advertise-address=192.168.99.200 绑定 apiserver 到 master 节点的 Host-Only 适配器的地址,默认是绑到 NAT 的地址上,这样其他机器是永远也访问不到的。
  2. --pod-network-cidr=10.244.0.0/16 指定 pod 网络地址空间,我们使用 flannel 组件必须使用这个空间。
  3. kubeadm 的完整参考手册 kubeadm reference guide
  4. 推荐保存最后输出的 join 命令到文件(以免忘记或找不到了),方便添加节点到集群。如果忘了也找不到输出了,网上有方法生成哈希值,请自行查找。
  • 配置 kubectl 访问集群
# root user
export KUBECONFIG=/etc/kubernetes/admin.conf

# non-root user
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 从本地主机操作,需要在本地安装 kubectl 客户端
mkdir -p ~/.kube

scp <username>@192.168.99.200:/home/<username>/.kube/config ~/.kube/config # 从 master 复制配置文件到本地
  • 测试配置
kubectl cluster-info #有正常输出即可

安装 flannel 网络

  • flannel 默认的监听接口是 NAT 适配器的接口,我们需要的是 Host-Only 适配器的接口,所以需要修改 kube-flannel.yml 文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

给 /opt/bin/flanneld 命令添加 --iface="enp0s8" 参数 # enp0s8 是 Host-Only 适配器对应的接口

kubectl apply -f kube-flannel.yml
  • 测试配置
kubectl get pods --all-namespaces -o wide # 稍等一会,下载镜像需要一定时间,最后应该显示 flannel pods 是 Running 状态, kube-dns 也是 Running 状态
  • 消除 master 隔离。默认 master 上不调度 p
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java字节码结构剖析三:方法表 下一篇Java字节码结构剖析二:字段表

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目