注意:这里使用的centos7.x,也必须是7以上,6不适用
1,将主机与IP地址写入hosts文件夹中,master与salve都需要
master etcd registry 是指向主节点IP地址 也就是说配置三项或者一项都可
2,关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
3,部署etcd服务 k8s的的依赖
yum install etcd -y
编辑 /etc/etcd/etcd.conf 文件
sed -i 's/原字符串/新字符串/' /home/1.txt
关于etcd监听的2379或者4001端口,都行,官方建议2379
sed -i 's/ETCD_NAME=default/ETCD_NAME=主机名1/' /etc/etcd/etcd.conf
sed -i 's/ETCD_LISTEN_CLIENT_URLS="http:\/\/.*:2379"/ETCD_LISTEN_CLIENT_URLS="http:\/\/0.0.0.0:2379"/;s/ETCD_ADVERTISE_CLIENT_URLS="http:\/\/.*:2379"/ETCD_ADVERTISE_CLIENT_URLS="http:\/\/0.0.0.0:2379"/' /etc/etcd/etcd.conf
启动并验证状态
systemctl start etcd
etcdctl set testdir/testkey0 0
etcdctl get testdir/testkey0
etcdctl -C http://主机名1:2379 cluster-health
----member 8e9e05c52164694d is healthy: got healthy result from http://0.0.0.0:2379
cluster is healthy
3,安装master节点
3.1,Docker安装
配置镜像路径
cat > /etc/yum.repos.d/virt7-docker-common-release.repo << EOF
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
EOF
链接网络
yum -y install --enablerepo=virt7-docker-common-release
配置registry镜像库,表示可以从节点上拉取镜像 即为registry节点
编辑/etc/sysconfig/docker文件
sed -i 's/OPTIONS=\x27--selinux-enabled --log-driver=journald --signature-verification=false.*\x27/OPTIONS=\x27--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https:\/\/wzmto2ol.mirror.aliyuncs.com --insecure-registry 主机名1:5000 --add-registry 主机名1:5000\x27/' /etc/sysconfig/docker
设置开机自启动并开启服务
chkconfig docker on
service docker start
3.2,安装kubernetes:
master节点需要运行Kubernets API Server,Kubernets Controller Manager,Kubernets Scheduler组件
配置Kubernets API Server
编辑/etc/kubernetes/apiserver
sed -i 's/KUBE_API_ADDRESS="--insecure-bind-address=.*"/KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"/;s/KUBE_ETCD_SERVERS="--etcd-servers=http:\/\/.*:2379"/KUBE_ETCD_SERVERS="--etcd-servers=http:\/\/主机名1:2379"/' /etc/kubernetes/apiserver
#去掉权限检查以免unable to create pods: No API token found for service account "default"
sed -i 's/KUBE_ADMISSION_CONTROL=.*/KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"/' /etc/kubernetes/apiserver
编辑 /etc/kubernetes/config
sed -i 's/KUBE_MASTER="--master=http:\/\/.*:8080"/KUBE_MASTER="--master=http:\/\/主机名1:8080"/' /etc/kubernetes/config
注意:主节点也要编辑 /etc/kubernetes/kubelet 不然启动的时候是 127.0.0.1 不是主节点的名称
sed -i 's/KUBELET_ADDRESS="--address=.*"/KUBELET_ADDRESS="--address=0.0.0.0"/;s/KUBELET_HOSTNAME="--hostname-override=.*"/KUBELET_HOSTNAME="--hostname-override=主机名1"/;s/KUBELET_API_SERVER="--api-servers=http:\/\/.*:8080"/KUBELET_API_SERVER="--api-servers=http:\/\/主机名1:8080"/;s/KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=.*"/KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=主机名1:5000\/pod-infrastructure"/;s/KUBELET_ARGS=.*/KUBELET_ARGS="--cluster-dns=10.254.10.2 --cluster-domain=hi --allow-privileged=true"/' /etc/kubernetes/kubelet
启动服务并设置开机自启动
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,部署salve节点
4.1, 安装docker 注意注意:这里也要修改配置文件/etc/sysconfig/docker
4.2 ,安装kubernetes
4.3 ,配置并启动kubernetes
在salve节点上需要运行以下两个组件 Kubelet , Kubernets Proxy
4.3.1 /etc/kubernetes/config
sed -i 's/KUBE_MASTER="--master=http:\/\/.*:8080"/KUBE_MASTER="--master=http:\/\/主机名1:8080"/' /etc/kubernetes/config
编辑 /etc/kubernetes/kubelet
注意这里的主机名2为从节点的主机名 需更换,主机名1为master节点 ,第二主机名1为自身镜像资源库节点
sed -i 's/KUBELET_ADDRESS="--address=.*"/KUBELET_ADDRESS="--address=0.0.0.0"/;s/KUBELET_HOSTNAME="--hostname-override=.*"/KUBELET_HOSTNAME="--hostname-override=主机名2"/;s/KUBELET_API_SERVER="--api-servers=http:\/\/.*:8080"/KUBELET_API_SERVER="--api-servers=http:\/\/主机名1:8080"/;s/KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=.*"/KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=主机名1:5000\/pod-infrastructure"/;s/KUBELET_ARGS=.*/KUBELET_ARGS="--cluster-dns=10.254.10.2 --cluster-domain=hi --allow-privileged=true"/' /etc/kubernetes/kubelet
启动服务并设置开机自启动
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy.service
systemctl start kube-proxy.service
验证结果
[root@主机名1 ~]# kubectl -s http://主机名1:8080 get node
NAME STATUS AGE
主机名2 Ready 24s
主机名3 Ready 23s
[root@主机名1 ~]# kubectl get nodes
NAME STATUS AGE
主机名2 Ready 1m
主机名3 Ready 1m
5,创建覆盖网络--Flannel
Flannel一个网络管理工具,在master节点与slave节点中都需安装
yum install flannel
master、node上均编辑/etc/sysconfig/flanneld
这里的主机名1为etcd服务的节点的主机名
sed -i 's/FLANNEL_ETCD_ENDPOINTS="http:\/\/.*:2379"/FLANNEL_ETCD_ENDPOINTS="http:\/\/主机名1:2379"/;s/FLANNEL_ETCD_PREFIX=".*"/FLANNEL_ETCD_PREFIX="\/kube-centos\/network"/' /etc/sysconfig/flanneld
在master节点中配置上文FLANNEL_ETCD_PREFIX对应文件/kube-centos/network的值
etcdctl mkdir /kube-centos/network
etcdctl mk /kube-centos/network/config "{ \"Network\": \"192.168.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"
剩下就是部署kubernetes-dashboard.yaml, kube-dns_14了