手工搭建K8s环境

本文档详述了如何手动搭建Kubernetes测试环境,包括基础环境准备、安装部署etcd、flanneld、Docker,证书创建,Kubernetes master和node节点配置,以及验证集群和应用部署的步骤。在搭建过程中,涉及到了Ubuntu 16.04系统,etcd服务的安装与验证,flannel的配置,Docker的安装与配置,以及Kubernetes相关组件的安装与集群验证。
摘要由CSDN通过智能技术生成

理解Kubernetes(1):手工搭建Kubernetes测试环境

理解Kubernetes系列文章:

  1. 手工搭建环境
  2. 基本概念和操作

  

1. 基础环境准备

准备 3个Ubuntu节点,操作系统版本为 16.04,并做好以下配置:

  • 系统升级
  • 设置 /etc/hosts 文件,保持一致
  • 设置从 0 节点上无密码ssh 其它两个节点
节点名称 IP地址 etcd flanneld K8S docker
kub-node-0 172.23.100.4 Y Y
master:
kubctl
kube-apiserver
kuber-controller
kuber-scheduler
Y
kub-node-1 172.23.100.5 Y Y

node:

kube-proxy

kubelet

Y
kub-node-2 172.23.100.6 Y Y

node:

kube-proxy

kubelet

Y

 

2. 安装与部署

2.1 安装 etcd 

2.1.1 安装 
在3个节点上运行以下命令来安装 etcd 3.2.5 版本:
ETCD_VERSION=${ETCD_VERSION:-"3.2.5"}
ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o etcd.tar.gz
tar xzf etcd.tar.gz -C /tmp
mv /tmp/etcd-v${ETCD_VERSION}-linux-amd64 /opt/bin/
2.1.2 配置 
在3个节点上做如下配置:
  • 创建目录:
sudo mkdir -p /var/lib/etcd/
sudo mkdir -p /opt/config/
  • 创建 /opt/config/etcd.conf 文件:
复制代码
ETCD_DATA_DIR=/var/lib/etcd
ETCD_NAME="kub-node-0"
ETCD_INITIAL_CLUSTER="kub-node-0=http://172.23.100.4:2380,kub-node-1=http://172.23.100.5:2380,kub-node-2=http://172.23.100.6:2380"
ETCD_INITIAL_CLUSTER_STATE=new
ETCD_LISTEN_PEER_URLS=http://172.23.100.4:2380
ETCD_INITIAL_ADVERTISE_PEER_URLS=http://172.23.100.4:2380
ETCD_ADVERTISE_CLIENT_URLS=http://172.23.100.4:2379
ETCD_LISTEN_CLIENT_URLS=http://172.23.100.4:2379,http://127.0.0.1:2379
复制代码

注意:

(1)在 0 节点上 etcd cluster 起来后,1 和 2 上的  ETCD_INITIAL_CLUSTER_STATE 值需要改成 existing,表示加入已有集群。否则的话,它自己会创建一个cluster,而不是加入已有cluster。
(2)在每个节点上,IP 地址需要修改为本机地址。 
  • 创建 /lib/systemd/system/etcd.service 文件:
复制代码
[Unit]
Description=Etcd Server
Documentation=https://github.com/coreos/etcd
After=network.target
[Service]
User=root
Type=simple
EnvironmentFile=-/opt/config/etcd.conf
ExecStart=/opt/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target
复制代码

每个节点上都是一样的。 

  • 在三个节点上启动服务:
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
2.1.3 测试服务
  • 查看etcd集群状态:
root@kub-node-2:/home/ubuntu# /opt/bin/etcdctl cluster-health
member 664b85ff39242fbc is healthy: got healthy result from http://172.23.100.6:2379
member 9dd263662a4b6f73 is healthy: got healthy result from http://172.23.100.4:2379
member b17535572fd6a37b is healthy: got healthy result from http://172.23.100.5:2379
cluster is healthy
  • 查看 etcd 集群成员:
root@kub-node-0:/home/ubuntu# /opt/bin/etcdctl member list
9dd263662a4b6f73: name=kub-node-0 peerURLs=http://172.23.100.4:2380 clientURLs=http://172.23.100.4:2379 isLeader=false
b17535572fd6a37b: name=kub-node-1 peerURLs=http://172.23.100.5:2380 clientURLs=http://172.23.100.5:2379 isLeader=true
e6db3cac1db23670: name=kub-node-2 peerURLs=http://172.23.100.6:2380 clientURLs=http://172.23.100.6:2379 isLeader=false

2.2 部署flanneld

2.2.1 安装 0.8.0 版本

在每个节点上:

curl -L https://github.com/coreos/flannel/releases/download/v0.8.0/flannel-v0.8.0-linux-amd64.tar.gz flannel.tar.gz
tar xzf flannel.tar.gz -C /tmp
mv /tmp/flanneld /opt/bin/
2.2.2 配置
在每个节点上: 
  • 创建 /lib/systemd/system/flanneld.service 文件:
复制代码
[Unit]
Description=Flanneld
Documentation=https://github.com/coreos/flannel
After=network.target
Before=docker.service
[Service]
User=root
ExecStart=/opt/bin/flanneld \
--etcd-endpoints="http://172.23.100.4:2379,http://172.23.100.5:2379,http://172.23.100.4:2379" \
--iface=172.23.100.4 \
--ip-masq
Restart=on-failure
Type=notify
LimitNOFILE=65536
复制代码

注意:在每个节点上,iface 设置为本机ip。

  • 在 0 node上,运行 
/opt/bin/etcdctl --endpoints="http://172.23.100.4:2379,http://172.23.100.5:2379,http://172.23.100.4:2379" mk /coreos.com/network/config \ '{"Network":"10.1.0.0/16", "Backend": {"Type": "vxlan"}}'

确认:

root@kub-node-0:/home/ubuntu# /opt/bin/etcdctl --endpoints="http://172.23.100.4:2379,http://172.23.100.5:2379,http://172.23.100.4:2379" get /coreos.com/network/config
 {
      "Network":"10.1.0.0/16", "Backend": {
      "Type": "vxlan"}}
  • 在三个节点上启动 flannled:
systemctl daemon-reload
systemctl enable flanneld
systemctl start flanneld

备注:flannel服务需要先于Docker启动。flannel服务启动时主要做了以下几步的工作:

  • 从etcd中获取network的配置信息。
  • 划分subnet,并在etcd中进行注册。
  • 将子网信息记录到/run/flannel/subnet.env中。

此时,能看到 etcd 中的 subnet:

root@kub-node-0:/home/ubuntu/kub# /opt/bin/etcdctl --endpoints="http://172.23.100.4:2379,http://172.23.100.5:2379,http://172.23.100.4:2379"; ls /coreos.com/network/subnets
/coreos.com/network/subnets/10.1.35.0-24
/coreos.com/network/subnets/10.1.1.0-24
/coreos.com/network/subnets/10.1.79.0-24

 

2.2.3 验证 
  • 通过运行 service flanneld status 查看其状态。
  • 检查 flannel 虚拟网卡。它们的配置需要和 etcd 中的配置一致。 
复制代码
root@kub-node-0:/home/ubuntu/kub# ifconfig flannel.1
flannel.1 Link encap:Ethernet  HWaddr 22:fc:69:01:33:30
          inet addr:10.1.35.0  Bcast:0.0.0.0  Mask:255.255.255.255

root@kub-node-1:/home/ubuntu# ifconfig flannel.1
flannel.1 Link encap:Ethernet HWaddr 0a:6e:a6:6f:95:04
inet addr:10.1.1.0 Bcast:0.0.0.0 Mask:255.255.255.255

root@kub-node-2:/home/ubuntu# ifconfig flannel.1
flannel.1 Link encap:Ethernet HWaddr 6e:10:b3:53:1e:f4
inet addr:10.1.79.0 Bcast:0.0.0.0 Mask:255.255.255.255

复制代码

2.3 部署 Docker

2.3.1 安装
 参考  https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#install-docker-ce-1,在每个节点上运行以下命令来安装Docker: 
复制代码
   sudo apt-get update
   sudo apt-get install     apt-transport-https     ca-certificates     curl     software-properties-common
   curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
   sudo apt-key fingerprint 0EBFCD88
   sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
   sudo apt-get update
   sudo apt-get install docker-ce
复制代码
2.3.2 验证

创建并运行 hello-world 容器:

复制代码
root@kub-node-0:/home/ubuntu/kub# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:445b2fe9afea8b4aa0b2f27fe49dd6ad130dfe7a8fd0832be5de99625dad47cd
Status: Downloaded newer image for hello-world:latest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值