详细说明
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的数据进行处理
# cat /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
# 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