目录
[1、准备环境 (温馨提示:尽量一次完成集群)](#1、准备环境 (温馨提示:尽量一次完成集群))
一. 环境搭建
1、准备环境 (温馨提示:尽量一次完成集群)
集群很容易断网
1) 计算机说明,建议系统版本7.4或者7.6
|------------|---------------|-------------|-----------------------------------------------------------------------|
| 主机名 | IP地址 | 角色 | 硬件 |
| k8s-master | 192.168.50.53 | master+node | Etcd、apiserver、controlor-manager、scheduler、kube-proxy、docker、registry |
| k8s-node1 | 192.168.50.50 | node | Kubletel、kube-proxy、docker |
| k8s-node2 | 192.168.50.51 | node | Kubletel、kube-proxy、docker |
2) 修改主机的计算机名设置host文件
root@localhost \~\]# hostname k8s-master \[root@localhost \~\]# bash \[root@k8s-master \~\]# vim /etc/hosts 192.168.50.53 k8s-master 192.168.50.50 k8s-node1 192.168.50.51 k8s-node2 \~ \[root@k8s-master \~\]# scp /etc/hosts 192.168.50.51:/etc \[root@k8s-master \~\]# scp /etc/hosts 192.168.50.50:/etc
2.安装master节点
1)安装etcd配置etcd
root@k8s-master \~\]# yum -y install etcd \[root@k8s-master \~\]# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak \[root@k8s-master \~\]# vim /etc/etcd/etcd.conf 6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" 21 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.50.53:2379" \[root@k8s-master \~\]# systemctl start etcd \[root@k8s-master \~\]# systemctl enable etcd Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
2)安装k8s-master节点
root@k8s-master \~\]# yum -y install kubernetes-master.x86_64
3)配置apiserver
root@k8s-master \~\]# vim /etc/kubernetes/apiserver
> 1 ###
>
> 2 # kubernetes system config
>
> 3 #
>
> 4 # The following values are used to configure the kube-apiserver
>
> 5 #
>
> 6
>
> 7 # The address on the local server to listen to.
>
> 8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
>
> 9
>
> 10 # The port on the local server to listen on.
>
> 11 KUBE_API_PORT="--port=8080"
>
> 12
>
> 13 # Port minions listen on
>
> 14 KUBELET_PORT="--kubelet-port=10250"
>
> 15
>
> 16 # Comma separated list of nodes in the etcd cluster
>
> 17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.50.53:2379"
>
> 18
>
> 19 # Address range to use for services
>
> 20 KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
>
> 21
>
> 22 # default admission control policies
>
> 23KUBE_ADMISSION_CONTROL="admissioncontrol=NamespaceLifecycle,NamespaceExists,LimitRanger,Security ContextDeny,ResourceQuota"
>
> 24
>
> 25 # Add your own!
>
> 26 KUBE_API_ARGS=""
**4) 配置controller和scheduler**
\[root@k8s-master \~\]# vim /etc/kubernetes/config
> 22 KUBE_MASTER="--master=http://192.168.50.53:8080"
**启动k8s服务**
> \[root@k8s-master \~\]# systemctl start kube-apiserver.service
>
> \[root@k8s-master \~\]# systemctl start kube-controller-manager.service
>
> \[root@k8s-master \~\]# systemctl start kube-scheduler.service
>
> \[root@k8s-master \~\]# systemctl enable kube-apiserver.service
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kube-apiserver.service to /usr/lib/systemd/system/kube-apiserver.service.
\[root@k8s-master \~\]# systemctl enable kube-controller-manager.service
> Created symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to /usr/lib/systemd/system/kube-controller-manager.service.
>
> \[root@k8s-master \~\]# systemctl enable kube-scheduler.server
>
> Failed to execute operation: No such file or directory
>
> \[root@k8s-master \~\]# systemctl enable kube-scheduler.service
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kube-scheduler.service to /usr/lib/systemd/system/kube-scheduler.service.
**检查节点是否监控**
> \[root@k8s-master \~\]# kubectl get componentstatus
>
> NAME STATUS MESSAGE ERROR
>
> etcd-0 Healthy {"health":"true"}
>
> controller-manager Healthy ok
>
> scheduler Healthy ok
### ******3、安装k**** ****8**** ****s**** ****-**** ****master上的node******
**1)安装node**
\[root@k8s-master \~\]# yum -y install kubernetes node.x86_64
**2)配置kubelet**
> \[root@k8s-master \~\]# vim /etc/kubernetes/kubelet
>
> 5 KUBELET_ADDRESS="--address=192.168.50.53"
>
> 11 KUBELET_HOSTNAME="--hostname-override=k8s-master"
>
> 14 KUBELET_API_SERVER="--api-servers=http://192.168.50.53:8080"
**3)启动kubelet启动自动启动docker服务**
> \[root@k8s-master \~\]# systemctl start kubelet
>
> \[root@k8s-master \~\]# systemctl enable kubelet
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
**4)启动kubelet-proxy**
> \[root@k8s-master \~\]# systemctl start kube-proxy
>
> \[root@k8s-master \~\]# systemctl enable kube-proxy
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.
**5)检查node节点**
> \[root@k8s-master \~\]# kubectl get nodes
>
> NAME STATUS AGE
>
> k8s-master Ready 1m
### ******4、安装配置k**** ****8**** ****s**** ****-**** ****node**** ****1**** ****节点******
**1)安装node**
> \[root@k8s-node1 \~\]# yum -y install kubernetes node.x86_64
**2)node1连接k8s-master**
> \[root@k8s-node1 \~\]# vim /etc/kubernetes/config
>
> 22 KUBE_MASTER="--master=http://192.168.50.53:8080"
**3)配置kubelet**
> \[root@k8s-node1 \~\]# vim /etc/kubernetes/kubelet
>
> 5 KUBELET_ADDRESS="--address=192.168.50.50"
>
> 11 KUBELET_HOSTNAME="--hostname-override=k8s-node1"
>
> 14 KUBELET_API_SERVER="--api-servers=http://192.168.50.53:8080"
**4)启动服务**
> \[root@k8s-node1 \~\]# systemctl start kubelet
>
> \[root@k8s-node1 \~\]# systemctl start kube-proxy
>
> \[root@k8s-node1 \~\]# systemctl enable kubelet
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
>
> \[root@k8s-node1 \~\]# systemctl enable kube-proxy
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.
**5)在master节点检测node节点状态**
> \[root@k8s-master \~\]# kubectl get nodes
>
> NAME STATUS AGE
>
> k8s-master Ready 13m
>
> k8s-node1 Ready 1m
### ******5**** ****、安装k**** ****8**** ****s**** ****-**** ****node**** ****2**** ****节点******
**1)安装node**
> \[root@k8s-node2 \~\]# yum -y install kubernetes node.x86_64
**2)node1连接k8s-master**
> \[root@k8s-node2 \~\]# vim /etc/kubernetes/config
>
> 22 KUBE_MASTER="--master=http://192.168.50.53:8080"
**3)配置kubelet**
> \[root@k8s-node2 \~\]# vim /etc/kubernetes/kubelet
>
> 5 KUBELET_ADDRESS="--address=192.168.50.51"
>
> 11 KUBELET_HOSTNAME="--hostname-override=k8s-node2"
>
> 14 KUBELET_API_SERVER="--api-servers=http://192.168.50.53:8080"
**4)启动服务**
> \[root@k8s-node2 \~\]# systemctl start kubelet
>
> \[root@k8s-node2 \~\]# systemctl start kube-proxy
>
> \[root@k8s-node2 \~\]# systemctl enable kubelet
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
>
> \[root@k8s-node2 \~\]# systemctl enable kube-proxy
>
> Created symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.
**5)在master节点检测node节点状态**
> \[root@k8s-master \~\]# kubectl get nodes
>
> NAME STATUS AGE
>
> k8s-master Ready 19m
>
> k8s-node1 Ready 7m
>
> k8s-node2 Ready 1m
### ******6、为所有node节点配置flannel网络******
**1)在k8s-master节点安装flannel**
> \[root@k8s-master \~\]# yum -y install flannel -y
>
> \[root@k8s-master \~\]# vim /etc/sysconfig/flanneld
>
> 4 FLANNEL_ETCD_ENDPOINTS="http://192.168.50.53:2379"
\[root@k8s-master \~\]# etcdctl set /atomic.io/network/config '{"Network":"172.16.0.0/16"}'
> {"Network":"172.16.0.0/16"} //查看多一个网络
>
> \[root@k8s-master \~\]# systemctl start flanneld //重新启动docker服务和flannel网络一至
\[root@k8s-master \~\]# systemctl enable flanneld
Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
\[root@k8s-master \~\]# ifconfig //查看多一个网络
> flannel0: flags=4305\
2 Description=Docker Application Container Engine
3 Documentation=http://docs.docker.com
4 After=network.target
5 Wants=docker-storage-setup.service
6 Requires=docker-cleanup.timer
7
8 [Service]
9 Type=notify
10 NotifyAccess=main
11 EnvironmentFile=-/run/containers/registries.conf
12 EnvironmentFile=-/etc/sysconfig/docker
13 EnvironmentFile=-/etc/sysconfig/docker-storage
14 EnvironmentFile=-/etc/sysconfig/docker-network
15 Environment=GOTRACEBACK=crash
16 Environment=DOCKER_HTTP_HOST_COMPAT=1
17 Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT 添加这一行
19 ExecStart=/usr/bin/dockerd-current \
root@k8s-master \~\]# systemctl daemon-reload \[root@k8s-master \~\]# systemctl restart docker **2)配置k8s-node1节点** > \[root@k8s-node1 \~\]# vim /usr/lib/systemd/system/docker.service > > 18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT > > \[root@k8s-node1 \~\]# systemctl daemon-reload > > \[root@k8s-node1 \~\]# systemctl restart docker **3)配置k8s-node2节点** > \[root@k8s-node2 \~\]# vim /usr/lib/systemd/system/docker.service > > 18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT > > \[root@k8s-node2 \~\]# systemctl daemon-reload > > \[root@k8s-node2 \~\]# systemctl restart docker