参考连接:https://github.com/liuyi01/kubernetes-starter/tree/master/

1.环境准备

  • 至少准备一台服务器

    • 操作系统 CentOS 7.6 (1810)
    • 内存 2G 【至少】
    • CPU 2核【至少】
    • 硬盘 20G 【至少】
  • 安装docker(所有节点)

  • 接受所有ip的数据包转发

vi /lib/systemd/system/docker.service

找到ExecStart=xxx,在这行上面加入一行,内容如下:(k8s的网络需要)
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT

  • 重启docker服务

systemctl daemon-reload
service docker restart

  • 关闭、禁用防火墙

systemctl stop firewalld.service

  • 设置系统参数 - 允许路由转发,不对bridge的数据进行处理

#写入配置文件
$ cat << EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
#生效配置文件
$ sysctl -p /etc/sysctl.d/k8s.conf

下载后将压缩文件放到home目录下解压文件
tar -xvf kubernetes-bins.tar.gz
添加环境变量
export PATH=$PATH:home/kubernetes-bins

  • 准备配置文件(所有节点)
  1. 下载配置文件

#clone已准备好的配置到本地
$ cd /usr/local/
$ git clone https://github.com/liuyi01/kubernetes-starter.git
#看看git内容
$ cd /usr/local/kubernetes-starter && ls

  1. 修改配置

cd到之前下载的git代码目录
cd /usr/local/kubernetes-starter
$ vi config.properties

config.properties配置:

#kubernetes二进制文件目录,eg: kubernetes-bins
BIN_PATH=/home/kubernetes-bins
#当前节点ip, eg: 192.168.1.248
NODE_IP=192.168.1.248
#etcd服务集群列表, eg: http://192.168.1.248:2379
#如果已有etcd集群可以填写现有的。没有的话填写:http://${MASTER_IP}:2379 (MASTER_IP自行替换成自己的主节点ip)
##如果用了证书,就要填写https://${MASTER_IP}:2379 (MASTER_IP自行替换成自己的主节点ip)
ETCD_ENDPOINTS=http://192.168.1.248:2379
#kubernetes主节点ip地址, eg: 192.168.1.248
MASTER_IP=192.168.1.248
  1. 生成配置

#生成配置文件,确保执行过程没有异常信息
$ ./gen-config.sh simple
#查看生成的配置文件,确保脚本执行成功
$ find target/ -type f
target/all-node/kube-calico.service
target/master-node/kube-controller-manager.service
target/master-node/kube-apiserver.service
target/master-node/etcd.service
target/master-node/kube-scheduler.service
target/worker-node/kube-proxy.kubeconfig
target/worker-node/kubelet.service
target/worker-node/10-calico.conf
target/worker-node/kubelet.kubeconfig
target/worker-node/kube-proxy.service
target/services/kube-dns.yaml

2.基础集群部署

参考连接:https://github.com/liuyi01/kubernetes-starter/blob/master/docs/2-kubernetes-simple.md

  • 部署ETCD(主节点)

#把服务配置文件copy到系统服务目录
$ cp target/master-node/etcd.service /lib/systemd/system/
#enable服务
$ systemctl enable etcd.service
#创建工作目录(保存数据的地方)
$ mkdir -p /var/lib/etcd
#启动服务
$ service etcd start
#查看服务日志,看是否有错误信息,确保服务正常
$ journalctl -f -u etcd.service
启动如果报错
Failed at step EXEC spawning /home/kubernetes/bin/etcd: Permission deni…
检查环境变量/home/kubernetes-bins是否存在

  • 部署APIServer(主节点)

$ cp target/master-node/kube-apiserver.service /lib/systemd/system/
$ systemctl enable kube-apiserver.service
$ service kube-apiserver start
$ journalctl -f -u kube-apiserver

  • 部署ControllerManager(主节点)

$ cp target/master-node/kube-controller-manager.service /lib/systemd/system/
$ systemctl enable kube-controller-manager.service
$ service kube-controller-manager start
$ journalctl -f -u kube-controller-manager

  • 部署Scheduler(主节点)

$ cp target/master-node/kube-scheduler.service /lib/systemd/system/
$ systemctl enable kube-scheduler.service
$ service kube-scheduler start
$ journalctl -f -u kube-scheduler

  • 部署CalicoNode(所有节点)

$ cp target/all-node/kube-calico.service /lib/systemd/system/
$ systemctl enable kube-calico.service
$ service kube-calico start
$ journalctl -f -u kube-calico

查看容器运行请假

docker ps
CONTAINER ID IMAGE COMMAND CREATED …
4d371b58928b calico/node:v2.6.2 “start_runit” 3 hours ago…

查看节点运行情况

calicoctl node status

查看端口BGP 协议是通过TCP 连接来建立邻居的,因此可以用netstat 命令验证 BGP Peer

$ netstat -natp|grep ESTABLISHED|grep 179

查看集群ippool情况

apiVersion: v1
kind: ipPool
metadata:
cidr: 172.20.0.0/16
spec:
nat-outgoing: true

  • 配置kubectl命令(任意节点)

#指定apiserver地址(ip替换为你自己的api-server地址)
kubectl config set-cluster kubernetes --server=http://192.168.1.102:8080
#指定设置上下文,指定cluster
kubectl config set-context kubernetes --cluster=kubernetes
#选择默认的上下文
kubectl config use-context kubernetes

  • 配置kubelet(工作节点)

#确保相关目录存在
$ mkdir -p /var/lib/kubelet
$ mkdir -p /etc/kubernetes
$ mkdir -p /etc/cni/net.d

#复制kubelet服务配置文件
$ cp target/worker-node/kubelet.service /lib/systemd/system/
#复制kubelet依赖的配置文件
$ cp target/worker-node/kubelet.kubeconfig /etc/kubernetes/
#复制kubelet用到的cni插件配置文件
$ cp target/worker-node/10-calico.conf /etc/cni/net.d/

$ systemctl enable kubelet.service
$ service kubelet start
$ journalctl -f -u kubelet

  • 为集群增加service功能 - kube-proxy(工作节点)

#确保工作目录存在
$ mkdir -p /var/lib/kube-proxy
#复制kube-proxy服务配置文件
$ cp target/worker-node/kube-proxy.service /lib/systemd/system/
#复制kube-proxy依赖的配置文件
$ cp target/worker-node/kube-proxy.kubeconfig /etc/kubernetes/

$ systemctl enable kube-proxy.service
$ service kube-proxy start
$ journalctl -f -u kube-proxy

结束

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐