为了账号安全,请及时绑定邮箱和手机立即绑定

搭建k8s有哪些方式

/ 猿问

搭建k8s有哪些方式

ibeautiful 2019-02-14 11:22:23

搭建k8s有哪些方式


查看完整描述

2 回答

?
tonybai

大致以下几种:

  1. hard 模式:即不依赖任何高级工具,手工一个组件一个组件的配置及安装的模式。可参考:https://github.com/kelseyhightower/kubernetes-the-hard-way  这种模式适合对k8s原理十分了解的hacker。

  2. 使用第三方cloud provider,比如aws, azure,aliyun等云提供商提供的k8s服务。适用于不想关注k8s底层运维细节、仅focus业务的开发人员。

  3. 使用kubeadm搭建k8s集群。这种模式难度适中,对于想学习k8s的开发人员是一个好的起点。

  4. 单点模式:使用minikube。https://github.com/kubernetes/minikube  适合单机本地开发

    想了解和学习使用kubeadm搭建k8s集群的可以学习一下下面我的课程:

    ---

    实战课:Kubernetes实战:高可用集群搭建,配置,运维与应用

    免费课:Kubernetes基础:开启云原生之门

查看完整回答
反对 回复 2019-02-21
?
慕的地2183247
  • sudo docker run -d --net=host --name=etcd1 -v /etc/kubernetes/ssl:/etc/kubernetes/ssl -v /var/etcd/data/:/var/etcd/data/ gcr.io/google_containers/etcd:3.0.17  /usr/local/bin/etcd --data-dir=/var/etcd/data \  

  • --name=etcd2 \  

  • --listen-client-urls=http://0.0.0.0:2379  \  

  • --advertise-client-urls=http://192.168.56.103:2379  \  

  • --initial-advertise-peer-urls=http://192.168.56.103:2380  \  

  • --listen-peer-urls=http://192.168.56.103:2380  \  

  • --initial-cluster=etcd0=http://192.168.56.101:2380,etcd1=http://192.168.56.102:2380,etcd2=http://192.168.56.103:2380 \  

  • --initial-cluster-state=new \  

  • --cert-file=/etc/kubernetes/ssl/kubernetes.pem  \  

  • --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • --peer-cert-file=/etc/kubernetes/ssl/kubernetes.pem \  

  • --peer-key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • --trusted-ca-file=/etc/kubernetes/ssl/ca.pem \  

  • --peer-trusted-ca-file=/etc/kubernetes/ssl/ca.pem \  

  • --initial-cluster-token etcd-cluster-0   





  • sudo docker run -d --net=host --name=etcd0 -v /etc/kubernetes/ssl:/etc/kubernetes/ssl -v /var/etcd/data/:/var/etcd/data/ gcr.io/google_containers/etcd:3.0.17  /usr/local/bin/etcd --data-dir=/var/etcd/data --name=etcd0 \  

  • --listen-client-urls=http://0.0.0.0:2379 --advertise-client-urls=http://0.0.0.0:2379 \  

  • --initial-cluster-state=new \  

  • --cert-file=/etc/kubernetes/ssl/kubernetes.pem  \  

  • --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • --peer-cert-file=/etc/kubernetes/ssl/kubernetes.pem \  

  • --peer-key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • --trusted-ca-file=/etc/kubernetes/ssl/ca.pem \  

  • --peer-trusted-ca-file=/etc/kubernetes/ssl/ca.pem   



  • #验证  



  • http://10.101.85.159:2379/v2/members  



  • etcdctl   --ca-file=/etc/kubernetes/ssl/ca.pem  \  

  • --cert-file=/etc/kubernetes/ssl/kubernetes.pem   \  

  • --key-file=/etc/kubernetes/ssl/kubernetes-key.pem   \  

  • cluster-health  





  • #启动api  

  • sudo docker run -d --net=host --name=kube-apiserver -v /etc/kubernetes:/etc/kubernetes gcr.io/google_containers/hyperkube:v1.6.1 /hyperkube apiserver \  

  • --service-cluster-ip-range=10.254.0.0/16 \  

  • --advertise-address=192.168.56.101 --bind-address=192.168.56.101 --insecure-bind-address=192.168.56.101 \  

  • --kubelet-port=10250 \  

  • --port=8080 \  

  • --allow-privileged=true \  

  • --admission-control=ServiceAccount,NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota \  

  • --authorization-mode=RBAC \  

  • --runtime-config=rbac.authorization.k8s.io/v1beta1 \  

  • --kubelet-https=true \  

  • --experimental-bootstrap-token-auth \  

  • --token-auth-file=/etc/kubernetes/token.csv  \  

  • --service-node-port-range=30000-32767 \  

  • --tls-cert-file=/etc/kubernetes/ssl/kubernetes.pem  \  

  • --tls-private-key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • --client-ca-file=/etc/kubernetes/ssl/ca.pem \  

  • --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem \  

  • --v=0 \  

  • --logtostderr=true \  

  • --allow-privileged=true \  

  • --etcd-cafile=/etc/kubernetes/ssl/ca.pem \  

  • --etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem \  

  • --etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • --etcd-servers=http://192.168.56.101:2379,http://192.168.56.102:2379,http://192.168.56.103:2379  \  

  • --audit-log-maxage=30 --audit-log-maxbackup=3 --audit-log-maxsize=100 --event-ttl=1h  



  • #kube-controller-manager  

  • sudo docker run -d --net=host --name=kube-controller-manager -v /etc/kubernetes:/etc/kubernetes gcr.io/google_containers/hyperkube:v1.6.1 /hyperkube controller-manager \  

  • --master=http://192.168.56.101:8080 \  

  • --service-cluster-ip-range=10.254.0.0/16 \  

  • --cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem \  

  • --cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem  \  

  • --service-account-private-key-file=/etc/kubernetes/ssl/ca-key.pem \  

  • --root-ca-file=/etc/kubernetes/ssl/ca.pem \  

  • --v=2 --leader-elect=true   

  • #scheduler  

  • sudo docker run -d --net=host --name=kube-scheduler -v /etc/kubernetes:/etc/kubernetes gcr.io/google_containers/hyperkube:v1.6.1 /hyperkube scheduler \  

  • --master=http://192.168.56.101:8080 \  

  • --v=2 --leader-elect=true   









  • FLANNEL_NETWORK=192.168.0.0/16  

  • FLANNEL_SUBNET=192.168.40.1/24  

  • FLANNEL_MTU=1450  

  • FLANNEL_IPMASQ=false  
















  • etcdctl   --ca-file=/etc/kubernetes/ssl/ca.pem  \  

  • --cert-file=/etc/kubernetes/ssl/kubernetes.pem   \  

  • --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • set /coreos.com/network/config "{\"Network\":\"10.254.0.0/16\",\"Backend\":{\"Type\":\"vxlan\"}}"  







  • etcdctl   --ca-file=/etc/kubernetes/ssl/ca.pem  \  

  • --cert-file=/etc/kubernetes/ssl/kubernetes.pem   \  

  • --key-file=/etc/kubernetes/ssl/kubernetes-key.pem \  

  • get /coreos.com/network/config   





  • #网络配置  

  • ./flanneld --etcd-endpoints=http://192.168.56.101:2379,http://192.168.56.102:2379,http://192.168.56.103:2379 -etcd-cafile=/etc/kubernetes/ssl/ca.pem -etcd-certfile=/etc/kubernetes/ssl/kubernetes.pem -etcd-keyfile=/etc/kubernetes/ssl/kubernetes-key.pem > /var/log/flanneld 2>&1 &  



  • ./mk-docker-opts.sh -i  

  • cat /run/flannel/subnet.env  

  • source /run/flannel/subnet.env  

  • ifconfig docker0 ${FLANNEL_SUBNET}  



  • SUBNET=10.254.0.0/16  

  • defaultgw=`route -n | grep '^0.0.0.0' | awk '{print $2}'`  

  • ip route del $SUBNET via $defaultgw dev eth0  

  • ip route add $SUBNET via 0.0.0.0 dev flannel.1  



  • 10.254.51.0/24  

  • /etc/systemd/system/multi-user.target.wants/docker.service  

  • --disable-legacy-registry --bip=192.168.35.1/24 --ip-masq=false --mtu=1450  

  • sudo systemctl daemon-reload  

  • sudo systemctl restart docker  



  • #  

  • kubectl create clusterrolebinding kubelet-bootstrap \  

  • --server=http://192.168.56.101:8080 \  

  • --clusterrole=system:node-bootstrapper \  

  • --user=kubelet-bootstrap   



  • #启动   

  • hyperkube kubelet  --api-servers=http://192.168.56.101:8080 \  

  • --cluster-dns=10.254.0.2 \  

  • --cluster-domain=cluster.local. \  

  • --experimental-bootstrap-kubeconfig=/etc/kubernetes/bootstrap.kubeconfig \  

  • --kubeconfig=/etc/kubernetes/kubelet.kubeconfig  \  

  • --require-kubeconfig --cert-dir=/etc/kubernetes/ssl   > /var/log/kubelet 2>&1 &  



  • # apiserver让其认证通过  

  • kubectl get csr  

  • kubectl certificate approve csr-2b308  

  • kubectl get nodes  



  • #  

  • hyperkube proxy --master=http://192.168.56.101:8080 \  

  • --kubeconfig=/etc/kubernetes/kube-proxy.kubeconfig --cluster-cidr=10.254.0.0/16 > /var/log/proxy 2>&1 &  

 


查看完整回答
反对 回复 2019-02-17

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信