Kubernetes1.6安装指南 (二进制文件方式)
Kubernetes的總體架構
部署環境說明
| 主機名 | IP | 操作系統 | 角色 |
| node201 ? ? ? | 10.0.0.201 ? ? ? ? ? | centos 7.3 64位 ? ? ? | Master |
| node202 | 10.0.0.202 | centos 7.3 64位 | Node |
| node203 | 10.0.0.203 | centos 7.3 64位 | Node |
關閉防火墻或開通相關端口,測試環境部署推薦先關閉防火墻服務。
systemctl stop firewalld
systemctl disable firewalld
停止SELinux。
編輯文件/etc/selinux/config
容器引擎docker的部署
yum install docker,切記不要安裝docker-ce,kubernetes1.6.2目前不支持docker-ce.
http://blog.csdn.net/chenhaifeng2016/article/details/71122886
跨主機容器間網絡通信采用flannel vxlan
http://blog.csdn.net/chenhaifeng2016/article/details/71480249
封包方式影響性能,不建議用于生產環境。如果對性能有要求,建議采用路由方案,比如calico。
部署Kubernetes
下載軟件包
wget?https://github.com/kubernetes/kubernetes/releases/download/v1.6.2/kubernetes.tar.gz
tar zxvf kubernetes.tar.gz
安裝軟件
cd kubernetes
./cluster/get-kube-binaries.sh
下載完成后,解壓server/kubernetes-server-linux-amd64.tar.gz
服務程序的完整路徑
/usr/local/src/kubernetes/server/kubernetes/server/bin/
定義kube-apiserver.service
[Unit] Description=Kube-apiserver Service After=network.target After=etcd.service After=docker.service After=flanneld.service[Service] Type=notify ExecStart=/usr/local/src/kubernetes/server/kubernetes/server/bin/kube-apiserver \--allow-privileged=true \--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota \--etcd-servers=http://10.0.0.201:2379,10.0.0.202:2379,10.0.0.203:2379 \--advertise-address=10.0.0.201 \--bind-address=10.0.0.201 \--insecure-bind-address=0.0.0.0 \--log-dir=/usr/local/src/kubernetes/log/kube-apiserver \--logtostderr=false \--service-cluster-ip-range=10.254.0.0/16 \--v=0Restart=on-failure LimitNOFILE=65536[Install] WantedBy=multi-user.target定義kube-controller-manager.service
[Unit] Description=Kube-controller-manager Service After=network.target After=docker.service After=etcd.service After=flanneld.service[Service] ExecStart=/usr/local/src/kubernetes/server/kubernetes/server/bin/kube-controller-manager \--logtostderr=false \--log-dir=/usr/local/src/kubernetes/log/kube-controller-manager \--master=http://0.0.0.0:8080 \--service-cluster-ip-range=10.254.0.0/16 \--leader-elect=true \--v=0Restart=on-failure LimitNOFILE=65536[Install] WantedBy=multi-user.target定義kube-scheduler.service
[Unit] Description=Kube-scheduler Service After=network.target After=docker.service After=etcd.service After=flanneld.service[Service] ExecStart=/usr/local/src/kubernetes/server/kubernetes/server/bin/kube-scheduler \--log-dir=/usr/local/src/kubernetes/log/kube-scheduler \--logtostderr=false \--master=http://0.0.0.0:8080 \--leader-elect=true \--v=0Restart=on-failure LimitNOFILE=65536[Install] WantedBy=multi-user.target
cp *.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start kube-apiserver?kube-controller-manager kube-scheduler
systemctl status kube-apiserver?kube-controller-manager kube-schedulersystemctl enable?kube-apiserver?kube-controller-manager kube-scheduler
配置Node (注意事項:不同的Node配置不同的IP地址)
節點node201不部署kubelet和kube-proxy.
創建kubelet.service
[Unit] Description=Kubelet Service After=network.target After=docker.service After=etcd.service After=flanneld.service[Service] ExecStart=/usr/local/src/kubernetes/server/kubernetes/server/bin/kubelet \--api-servers=http://10.0.0.201:8080 \--log-dir=/usr/local/src/kubernetes/log/kubelet \--logtostderr=false \--address=10.0.0.203 \--hostname-override=10.0.0.203 \--allow-privileged=true \--pod-infra-container-image=docker.io/wangyanbin/pause-amd64:3.0 \--v=0 \--cgroup-driver=systemdRestart=on-failure LimitNOFILE=65536[Install] WantedBy=multi-user.target創建kube-proxy.service
[Unit] Description=Kube-proxy Service After=network.target After=docker.service After=etcd.service After=flanneld.service[Service] ExecStart=/usr/local/src/kubernetes/server/kubernetes/server/bin/kube-proxy \--log-dir=/usr/local/src/kubernetes/log/kube-proxy \--logtostderr=false \--master=http://10.0.0.201:8080 \--v=0 \--bind-address=10.0.0.203 \--hostname-override=10.0.0.203 \--cluster-cidr=10.254.0.0/16Restart=on-failure LimitNOFILE=65536[Install] WantedBy=multi-user.target運行服務
cp *.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start kubelet kube-proxy
systemctl status kubelet kube-proxy
systemctl enable kubelet kube-proxy
驗證結果
測試服務
kubectl run nginx --replicas=2 --labels="run=load-balancer-example" --image=nginx ?--port=80
kubectl expose deployment nginx --type=NodePort --name=example-service
kubectl describe svc example-service
訪問nginx
通過Node IP和Node Port訪問服務
curl 10.0.0.202:32360
curl 10.0.0.203:32360
通過Pod IP訪問服務
curl 172.30.73.2:80
curl 172.30.8.2:80
在kubernetes集群范圍內通過Service IP訪問服務。一個微服務對應一個虛擬的ServiceIP,這是一個很巧妙的設計。
curl 10.254.253.118:80 (只能在節點node202和node203運行,因為需要kube-proxy)
接下來部署kube-DNS, Ingress controller, WebUI Dashboard, heapster監控, prometheus監控,EFK日志, Helm等功能。
總結
以上是生活随笔為你收集整理的Kubernetes1.6安装指南 (二进制文件方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: systemd教程推荐
- 下一篇: Serverless,后端小程序的未来