1. 环境介绍及准备
1.1 操作系统
- CentOS 7.3 64位
- 内核版本:3.10.0-514.6.1.el7.x86_64
1.2 主机信息
节点及功能 | 主机名 | IP |
---|---|---|
kube-apiserver、… | K8s-master | 10.0.251.148 |
kubelet、kubeprox… | K8s-node-1 | 10.0.251.153 |
kubelet、kubeprox… | K8s-node-2 | 10.0.251.155 |
设置主机名:
hostnamectl --static set-hostname k8s-master hostnamectl --static set-hostname k8s-node-1 hostnamectl --static set-hostname k8s-node-2
在每台机器上设置hosts:
echo '10.0.251.148 k8s-master 10.0.251.148 etcd 10.0.251.148 registry 10.0.251.153 k8s-node-1 10.0.251.155 k8s-node-2' >> /etc/hosts
1.3 关闭防火墙
systemctl disable firewalld.service systemctl stop firewalld.service
2. 部署etcd
安装etcd:
yum install etcd -y
编辑etcd配置文件 /etc/etcd/etcd.conf
:
vi /etc/etcd/etcd.conf
修改配置:
ETCD_NAME=master ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379,http://0.0.0.0:4001" ETCD_ADVERTISE_CLIENT_URLS="http://etcd:2379,http://etcd:4001"
启动并验证状态:
systemctl start etcd etcdctl set testdir/testkey0 0 etcdctl get testdir/testkey0 etcdctl -C http://etcd:4001 cluster-health etcdctl -C http://etcd:2379 cluster-health
3. 部署master
3.1 安装Docker
yum install docker
配置Docker配置文件 /etc/sysconfig/docker
:
vim /etc/sysconfig/docker
修改配置:
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry registry:5000'
设置开机自启动并启动服务:
chkconfig docker on service docker start
3.2 安装Kubernetes
配置Kubernetes安装的镜像源:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF setenforce 0 yum install kubernetes
3.3 配置并启动Kubernetes
3.3.1 /etc/kubernetes/apiserver
vim /etc/kubernetes/apiserver
修改配置:
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0" KUBE_API_PORT="--port=8080" KUBE_ETCD_SERVERS="--etcd-servers=http://etcd:2379" KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
3.3.2 /etc/kubernetes/config
vim /etc/kubernetes/config
修改配置:
KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://k8s-master:8080"
启动服务并设置开机自启动:
systemctl enable kube-apiserver.service systemctl start kube-apiserver.service systemctl enable kube-controller-manager.service systemctl start kube-controller-manager.service systemctl enable kube-scheduler.service systemctl start kube-scheduler.service
4. 部署node
4.1 安装Docker
(略)
4.2 安装Kubernetes
(略)
4.3 配置并启动Kubernetes
4.3.1 /etc/kubernetes/config
vim /etc/kubernetes/config
修改配置:
KUBE_LOGTOSTDERR="--logtostderr=true" KUBE_LOG_LEVEL="--v=0" KUBE_ALLOW_PRIV="--allow-privileged=false" KUBE_MASTER="--master=http://k8s-master:8080"
4.3.2 /etc/kubernetes/kubelet
vim /etc/kubernetes/kubelet
修改配置:
KUBELET_ADDRESS="--address=0.0.0.0" KUBELET_HOSTNAME="--hostname-override=k8s-node-1" KUBELET_API_SERVER="--api-servers=http://k8s-master:8080" KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
启动服务并设置开机自启动:
systemctl enable kubelet.service systemctl start kubelet.service systemctl enable kube-proxy.service systemctl start kube-proxy.service
4.4 查看状态
在master上查看集群中节点及节点状态:
kubectl -s http://k8s-master:8080 get node
5. 创建覆盖网络——Flannel
5.1 安装Flannel
yum install flannel
5.2 配置Flannel
编辑配置文件 /etc/sysconfig/flanneld
:
vi /etc/sysconfig/flanneld
修改配置:
FLANNEL_ETCD_ENDPOINTS="http://etcd:2379" FLANNEL_ETCD_PREFIX="/kube-centos/network" FLANNEL_OPTIONS="--iface=eth0"
启动Flannel并设置开机自启动:
systemctl enable flanneld systemctl start flanneld
在每个节点上重启kubelet:
systemctl restart kubelet
5.3 检查状态
在master上运行以下命令检查Flannel状态:
kubectl -s http://k8s-master:8080 get pods --all-namespaces
6. 部署Dashboard
6.1 下载Dashboard配置文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc6/aio/deploy/recommended.yaml
6.2 修改Dashboard配置文件
vim recommended.yaml
在 Service
部分添加以下内容:
type: NodePort nodePort: 30001 selector: k8s-app: kubernetes-dashboard
6.3 部署Dashboard
kubectl -s http://k8s-master:8080 apply -f recommended.yaml
6.4 访问Dashboard
通过浏览器访问:http://k8s-node-1:30001
,使用Token登录。可以通过以下命令获取Token:
kubectl -s http://k8s-master:8080 -n kubernetes-dashboard describe secret $(kubectl -s http://k8s-master:8080 -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')
7. 安装kubectl
yum install kubectl
8. 部署Nginx
8.1 创建Nginx Deployment
kubectl -s http://k8s-master:8080 create deployment nginx --image=nginx
8.2 暴露Nginx服务
kubectl -s http://k8s-master:8080 expose deployment nginx --port=80 --type=NodePort
8.3 查看Nginx服务
kubectl -s http://k8s-master:8080 get service nginx
可以通过访问任一Node的IP和NodePort查看Nginx欢迎页面。
至此,Kubernetes集群已经部署完成。