详细说明
https://github.com/liuyi01/kubernetes-starter/blob/master/docs/1-pre.md
https://github.com/liuyi01/kubernetes-starter/blob/master/docs/2-kubernetes-simple.md

环境准备

OS IP hostname 配置
centos7 172.16.10.144 master 2C4G
centos7 172.16.10.196 work1 2C4G
centos7 172.16.10.198 work2 2C4G

系统设置

关闭各服务器iptables及selinux
设置系统参数 - 允许路由转发,不对bridge的数据进行处理

  1. # cat /etc/sysctl.d/k8s.conf
  2. net.ipv4.ip_forward = 1
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. # sysctl -p /etc/sysctl.d/k8s.conf

若报错 sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory 解决方法 modprobe br_netfilter

配置hosts

# cat /etc/hosts
172.16.10.144  master
172.16.10.196  work1
172.16.10.198  work2

安装docker

# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install -y docker-ce docker-ce-cli containerd.io
# vim /lib/systemd/system/docker.service
#找到ExecStart=xxx,在这行上面加入一行,内容如下:(k8s的网络需要)
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
# systemctl daemon-reload
# service docker restart

k8s安装包及配置文件准备

# wget https://pan.baidu.com/s/16V9YVrZIl9PpdRDldWXtEw
# tar xvf kubernetes-bins.tar.gz -C /opt/
# git clone https://github.com/liuyi01/kubernetes-starter.git
修改配置文件,替换相关信息为集群节点信息
# cat config.properties
#kubernetes二进制文件目录
BIN_PATH=/opt/kubernetes-bins/

#当前节点ip
NODE_IP=172.16.10.198

#etcd服务集群列表
#如果已有etcd集群可以填写现有的。没有的话填写:http://${MASTER_IP}:2379 (MASTER_IP自行替换成自己的主节点ip)
##如果用了证书,就要填写https://${MASTER_IP}:2379 (MASTER_IP自行替换成自己的主节点ip)
ETCD_ENDPOINTS=http://172.16.10.144:2379


#kubernetes主节点ip地址
MASTER_IP=172.16.10.144
生成当前环境简易版k8s配置文件
# ./gen-config.sh simple

无认证授权版k8s部署

master部署etcd

# cp ~/kubernetes-starter/target/master-node/etcd.service /lib/systemd/system/
# systemctl enable etcd.service
# mkdir -p /var/lib/etcd
# service etcd start
# journalctl -f -u etcd.service

master部署APIServer

# cp ~/kubernetes-starter/target/master-node/kube-apiserver.service /lib/systemd/system/
# systemctl enable kube-apiserver.service
# service kube-apiserver start
# journalctl -f -u kube-apiserver

master部署ControllerManager

# cp ~/kubernetes-starter/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

master部署Scheduler

# cp ~/kubernetes-starter/target/master-node/kube-scheduler.service /lib/systemd/system/
# systemctl enable kube-scheduler.service
# service kube-scheduler start
# journalctl -f -u kube-scheduler

全部节点部署Calico

# cp ~/kubernetes-starter/target/all-node/kube-calico.service /lib/systemd/system/
# systemctl enable kube-calico.service
# service kube-calico start
# journalctl -f -u kube-calico

任意节点配置kubectl命令

# /opt/kubernetes-bins/kubectl config set-cluster kubernetes  --server=http://172.16.10.144:8080
Cluster "kubernetes" set.
# /opt/kubernetes-bins/kubectl config set-context kubernetes --cluster=kubernetes
Context "kubernetes" created.
# /opt/kubernetes-bins/kubectl config use-context kubernetes
Switched to context "kubernetes".

work配置kubelet服务

#确保相关目录存在
# mkdir -p /var/lib/kubelet
# mkdir -p /etc/kubernetes
# mkdir -p /etc/cni/net.d
# cp ~/kubernetes-starter/target/worker-node/kubelet.service /lib/systemd/system/
# cp ~/kubernetes-starter/target/worker-node/kubelet.kubeconfig /etc/kubernetes/
# cp ~/kubernetes-starter/target/worker-node/10-calico.conf /etc/cni/net.d/
# systemctl enable kubelet.service
# service kubelet start
# journalctl -f -u kubelet

work配置kube-proxy服务

# mkdir -p /var/lib/kube-proxy
# cp ~/kubernetes-starter/target/worker-node/kube-proxy.service /lib/systemd/system/
# cp ~/kubernetes-starter/target/worker-node/kube-proxy.kubeconfig /etc/kubernetes/
# systemctl enable kube-proxy.service
# service kube-proxy start
# journalctl -f -u kube-proxy

master创建kube-dns

# /opt/kubernetes-bins/kubectl create -f ~/kubernetes-starter/target/services/kube-dns.yaml
# /opt/kubernetes-bins/kubectl get pods  -n kube-system
NAME                        READY     STATUS    RESTARTS   AGE
kube-dns-7c448c4895-89464   3/3       Running   0          22h
# /opt/kubernetes-bins/kubectl get deploy  -n kube-system
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-dns   1         1         1            1           22h
# /opt/kubernetes-bins/kubectl get svc  -n kube-system
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
kube-dns   ClusterIP   10.68.0.2    <none>        53/UDP,53/TCP   22h
# /opt/kubernetes-bins/kubectl get pods  -n kube-system -o wide
NAME                        READY     STATUS    RESTARTS   AGE       IP             NODE
kube-dns-7c448c4895-89464   3/3       Running   0          22h       172.20.123.0   172.16.10.198