kubernetes集群搭建
环境准备
准备2台虚拟机,系统:CentOS 7.4,关闭防火墙
1
2systemctl stop firewalld
systemctl disable firewalld禁用SELINUX:
1
setenforce 0
永久关闭
1
2vi /etc/selinux/config
SELINUX=disabled
安装 Docker
添加 yum 源
1
2
3
4yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo查看Docker版本:
1
yum list docker-ce.x86_64 --showduplicates |sort -r
安装
1
2
3
4yum makecache fast
yum install -y docker-ce docker-ce-selinux
systemctl start docker
systemctl enable docker
安装kubeadm和kubelet
添加yum源,此处用的google,墙内的可以用阿里云
1
2
3
4
5
6
7
8
9
10cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF安装
1
2yum makecache fast
yum install -y kubelet kubeadm kubectl启动
1
systemctl enable kubelet.service
Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动。可以通过kubelet的启动参数–fail-swap-on=false更改这个限制。用命令可临时关闭
1
swapoff -a
修改/etc/sysctl.d/k8s.conf添加下面一行,执行
sysctl -p /etc/sysctl.d/k8s.conf
使修改生效,关闭swap分区。或vim /etc/fstab
文件,注释swap分区的挂载1
vm.swappiness=0
使用kubeadm 初始化
执行init
1
2
3
4kubeadm init \
--kubernetes-version=v1.11.0 \
--pod-network-cidr=172.20.0.0/16 \
--apiserver-advertise-address=192.168.11.129记录以下信息,加入节点时要用
1
kubeadm join 192.168.11.129:6443 --token czip6m.2oc4vtdj6y84me85 --discovery-token-ca-cert-hash sha256:b0343be5f206ed7a834e83e2bb06a6da0435d59e419af3c41bdacd5b603ee077
查看集群状态,节点状态
1
2kubectl get cs
kubectl get nodes
安装Pod Network
1
2
3
4mkdir -p ~/k8s/
cd ~/k8s
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml节点操作
节点加入集群
1
kubeadm join 192.168.11.129:6443 --token czip6m.2oc4vtdj6y84me85 --discovery-token-ca-cert-hash sha256:b0343be5f206ed7a834e83e2bb06a6da0435d59e419af3c41bdacd5b603ee077
从集群移除节点,master上执行:
1
2kubectl drain node2 --delete-local-data --force --ignore-daemonsets
kubectl delete node node2在node2上执行:
1
kubeadm reset
dashboard插件部署
下载部署文件
1
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
新建文件:
kubernetes-dashboard-admin.rbac.yaml
,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-admin
namespace: kube-system
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-admin
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard-admin
namespace: kube-system修改
kubernetes-dashboard.yml
146行:1
serviceAccountName: kubernetes-dashboard-admin
启动:
1
2kubectl apply -f kubernetes-dashboard.yaml -f kubernetes-dashboard-admin.rbac.yaml
kubectl proxy --address='192.168.11.129' --accept-hosts='^192\.168'查看登录token:
1
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-admin | awk '{print $1}')
登录地址:
1
http://192.168.11.129:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
heapster部署
1
2
3
4
5
6
7
8mkdir -p ~/k8s/heapster
cd ~/k8s/heapster
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/grafana.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/rbac/heapster-rbac.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/heapster.yaml
wget https://raw.githubusercontent.com/kubernetes/heapster/master/deploy/kube-config/influxdb/influxdb.yaml
kubectl create -f ./
附录
引用:
- https://www.kubernetes.org.cn/2906.html
- https://github.com/kubernetes/dashboard
- https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce
- https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
- https://kairen.github.io/2016/09/29/kubernetes/deploy/kubeadm/
- https://blog.frognew.com/2017/12/kubeadm-install-kubernetes-1.9.html
- http://blog.51cto.com/devingeng/2096639
- https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/