设为首页 收藏本站
查看: 698|回复: 0

[经验分享] 安装kubernetes集群

[复制链接]

尚未签到

发表于 2018-9-16 06:56:11 | 显示全部楼层 |阅读模式
  =========================
  ==== kubernetes实战 ======
  #环境
  操作系统
  - centos7
  主机
  - 172.16.53.240 k8s-master
  - 172.16.53.209 k8s-slave1
  - 172.16.53.250k8s-slave2
  代理
  export http_proxy=http://IP:PORT
  export https_proxy=http://IP:PORT
  # 安装(yum)
  echo "
  [virt7-testing]
  name=virt7-testing
  baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
  gpgcheck=0" >> /etc/yum.repos.d/kubernetes.repo
  # 所有机器安装kubernetes
  yum install kubernetes(slave)
  yum install -y etcd flannel kubernetes (k8s-master)
  = 关闭selinux
  setenforce 0
  = 关闭防火墙(有要求但未做) !=
  systemctl stop iptables
  systemctl disable iptables
  # 设置认证(可选)
  vi /etc/kubernetes/token_auht_file
  admin,admin,1
  system,system,2
  vim /etc/kubernetes/apiserver
  KUBE_API_ARGS="--secure-port=443 --token_auth_file=/etc/kubernetes/token_auth_file"
  =修改配置文件
  kubernetes
  - vi /etc/kubernetes/config
  - KUBE_LOGTOSTDERR="--logtostderr=true"
  - KUBE_LOG_LEVEL="--v=0"
  - KUBE_ALLOW_PRIV="--allow-privileged=false"
  - KUBE_MASTER="--master=http://172.16.53.240:8080"
  - vi /etc/kubernetes/apiserver
  - KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"
  - KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
  - KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
  - KUBE_API_ARGS=""
  - systemctl start
  etcd
  - vi /etc/etcd/etcd.conf
  - ETCD_NAME=default
  - ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
  - ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
  - ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
  - systemctl start etcd
  - etcdctl mkdir /kube-centos/network
  - etcdctl mk /kube-centos/network/config "{ \"Network\": \"10.254.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"
  flanneld
  - vi /etc/sysconfig/flanneld
  - FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
  - FLANNEL_ETCD_PREFIX="/kube-centos/network"
  = 启动服务
  for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do
  systemctl restart $SERVICES
  systemctl enable $SERVICES
  systemctl status $SERVICES
  done
  = 开放端口(master)
  vi /etc/sysconfig/iptables
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 2379 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 2380 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 6443 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 4194 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 8001 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 9090 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10248 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10249 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10250 -j ACCEPT
  ============================================================
  =======  slave 配置kubernetes ===============================
  echo "172.16.53.240 k8s-master" >> /etc/hosts
  = 安装kubernetes, flanndl
  yum install -y kubernetes flannel
  = 配置服务
  - vi /etc/kubernetes/apiserver
  - KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
  - vi /etc/kubernetes/kubelet
  - KUBELET_ADDRESS="--address=0.0.0.0"
  - KUBELET_PORT="--port=10250"
  - KUBELET_HOSTNAME="--hostname-override=k8s-slave2"
  - KUBELET_API_SERVER="--api-servers=http://k8s-master:8080"
  - KUBELET_ARGS=""
  - vi /etc/kubernetes/config
  - KUBE_MASTER="--master=http://k8s-master:8080"
  - vi /etc/sysconfig/flanneld
  - FLANNEL_ETCD_ENDPOINTS="http://k8s-master:2379"
  - FLANNEL_ETCD_PREFIX="/kube-centos/network"
  = 启动服务
  for SERVICES in kube-proxy kubelet docker; do
  systemctl restart $SERVICES
  systemctl enable $SERVICES
  systemctl status $SERVICES
  done
  = 配置kubectl
  - kubectl config set-cluster default-cluster --server=http://centos-master:8080
  - kubectl config set-context default-context --cluster=default-cluster --user=default-admin
  - kubectl config use-context default-context
  = 开放端口(slave)
  vi /etc/sysconfig/iptables
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 2379 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 4194 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10248 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10249 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10250 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 10255 -j ACCEPT
  -A INPUT -p tcp -m state --state NEW -m tcp --dport 32104 -j ACCEPT
  = 搭建私有仓库(单独server)
  mkdir -p /docker/data
  docker pull registry
  docker run -it --name registry -p 5000:5000 -v /docker/data:/tmp/registry registry
  =安装gcloud
  wget https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-151.0.1-linux-x86_64.tar.gz
  tar zxvf google-cloud-sdk-151.0.1-linux-x86_64.tar.gz
  mv google-cloud-sdk /usr/local/gcloud
  ln -s /usr/local/gcloud/bin/gcloud /usr/local/bin/gcloud
  = 设置docker代理
  mkdir /etc/systemd/system/docker.service.d/
  vi /usr/lib/systemd/system/docker.service
  [service]
  Environment="HTTP_PROXY=http://IP:PORT"
  Environment="HTTPS_PROXY=http://IP:PORT"
  systemctl restart docker
  = 安装dashboard UI(kube-ui)
  gcloud docker pull gcr.io/gcr.io/google_containers/kube-ui:v5
  vi kube-ui.yaml
  '''apiVersion: v1
  kind: ReplicationController
  metadata:
  name: kube-ui-v5
  namespace: kube-system
  labels:
  k8s-app: kube-ui
  version: v5
  kubernetes.io/cluster-service: "true"
  spec:
  replicas: 1
  selector:
  k8s-app: kube-ui
  version: v5
  template:
  metadata:
  labels:
  k8s-app: kube-ui
  version: v5
  kubernetes.io/cluster-service: "true"
  spec:
  containers:
  - name: kube-ui
  image: gcr.io/google_containers/kube-ui:v5
  resources:
  limits:
  cpu: 100m
  memory: 50Mi
  ports:
  - containerPort: 8080
  livenessProbe:
  httpGet:
  path: /
  port: 8080
  initialDelaySeconds: 30
  timeoutSeconds: 5
  ---
  apiVersion: v1
  kind: Service
  metadata:
  name: kube-ui
  namespace: kube-system
  labels:
  k8s-app: kube-ui
  kubernetes.io/cluster-service: "true"
  kubernetes.io/name: "KubeUI"
  spec:
  selector:
  k8s-app: kube-ui
  clusterIP: 10.254.0.254
  ports:
  - port: 80
  targetPort: 8080" '''
  vi kubernetes-dashboard.yaml
  '''
  kind: Deployment
  apiVersion: extensions/v1beta1
  metadata:
  labels:
  app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
  spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
  matchLabels:
  app: kubernetes-dashboard
  template:
  metadata:
  labels:
  app: kubernetes-dashboard
  # Comment the following annotation if Dashboard must not be deployed on master
  annotations:
  scheduler.alpha.kubernetes.io/tolerations: |
  [
  {
  "key": "dedicated",
  "operator": "Equal",
  "value": "master",
  "effect": "NoSchedule"
  }
  ]
  spec:
  containers:
  - name: kubernetes-dashboard
  image: docker.io/kubernetesdashboarddev/kubernetes-dashboard-amd64:head
  imagePullPolicy: Always
  ports:
  - containerPort: 9090
  protocol: TCP
  args:
  # Uncomment the following line to manually specify Kubernetes API server Host
  # If not specified, Dashboard will attempt to auto discover the API server and connect
  # to it. Uncomment only if the default does not work.
  - --apiserver-host=http://172.16.53.224:8080
  livenessProbe:
  httpGet:
  path: /
  port: 9090
  initialDelaySeconds: 30
  timeoutSeconds: 30
  ---
  kind: Service
  apiVersion: v1
  metadata:
  labels:
  app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
  spec:
  type: NodePort
  ports:
  - port: 80
  targetPort: 9090
  selector:
  app: kubernetes-dashboard'''
  = 检查服务运行状态
  kubectl get po --namespace=kube-system
  # = 安装Dashboard UI
  # cd /root/kube-ui
  # wget https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml
  # = docker pull 镜像并授权Google认证
  # gcloud docker -- pull gcr.io/google-containers/kubernetes-dashboard-amd64:v1.6.0
  # = 配置证书
  # openssl genrsa -out /etc/kubernetes/serviceaccount.key 2048
  ==================================================
  # 编译安装kube-ui
  = 安装node.js
  wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz
  tar xvf node-v6.10.2-linux-x64.tar.xz
  mv node-v6.10.2-linux-x64 /usr/local/node
  ln -s /usr/local/node/bin/node /usr/local/bin/node
  ln -s /usr/local/node/bin/npm /usr/local/bin/npm
  yum install git -y
  npm install -g bower
  = 安装kube-ui
  wget https://github.com/kubernetes/kube-ui/archive/master.zip
  unzip master.zip
  cd kube-ui-master/master/
  npm install
  #安装kube-admin
  curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kube-admin
  ==================================================
  == 编译安装 ====
  == 系统更新并安装依赖 ==
  yum update -y && yum install -y lsof telnet net-tools unzip wget git docker iptables-services
  mkdir /root/kube
  cd /root/kube
  tar zxvf google-cloud-sdk-151.0.0-linux-x86_64.gz && tar xvf node-v6.10.2-linux-x64.tar.xz  && unzip master.zip && tar zxvf kubernetes.tar.gz
  mv node-v6.10.2-linux-x64 /usr/local/node
  ln -s /usr/local/node/bin/npm /usr/local/bin/npm
  ln -s /usr/local/node/bin/node /usr/local/bin/node
  ln -s /usr/local/google-cloud-sdk/bin/gcloud  /usr/local/bin/gcloud
  ln -s /usr/local/google-cloud-sdk/bin/gsutil  /usr/local/bin/gsutil
  ln -s /usr/local/google-cloud-sdk/bin/bq  /usr/local/bin/bq
  #启动iptables
  systemctl disable firewalld
  systemctl stop firewalld
  # 安装 kubernetes
  cd /root/kube/kubernetes/cluster
  sh get-kube-local.sh #(需要***)
  sh get-kube-binaries.sh
  mv /root/kube/kubernetes/server/kubernetes /usr/local/
  ln -s /usr/local/kubernetes/server/bin/kubeadm /usr/local/bin/kubeadm
  ln -s /usr/local/kubernetes/server/bin/kubectl /usr/local/bin/kubectl
  ln -s /usr/local/kubernetes/server/bin/kubelet /usr/local/bin/kubelet
  ln -s /usr/local/kubernetes/server/bin/kube-apiserver /usr/local/bin/kube-apiserver
  ln -s /usr/local/kubernetes/server/bin/kube-fed /usr/local/bin/kube-fed
  ln -s /usr/local/kubernetes/server/bin/kube-proxy /usr/local/bin/kube-proxy
  ln -s /usr/local/kubernetes/server/bin/kube-controller-manager /usr/local/bin/kube-controller-manager
  # 安装dashboard
  cd /root/dashboard-master/
  npm install
  npm start
  = 参考网址
  http://kubecloud.io/guide-installing-kubernetes-dashboard-on-hypriotos/
  https://kubernetes.io/docs/tasks/web-ui-dashboard/
  https://github.com/kubernetes/dashboard
  https://kubernetes.io/docs/tasks/web-ui-dashboard/


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-584183-1-1.html 上篇帖子: Harbor用户机制、镜像同步和与Kubernetes的集成实践 下篇帖子: 使用Kubernetes V1来管理Docker的扩展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表