关于Kubernetes v1.14.0的 kube-controller-manager部署

摘要:
1.kube控制器管理器准备部署在kube apiserver部署服务器上的默认kube控制器。此处未列出服务器配置。二进制文件包含在kube apiserver中,因此不执行二进制下载和分发。2.生成kube控制器管理器证书以访问kube apiserver cat˂EOF|tee

  1、 kube-controller-manager准备

  默认kube-controller-manager 部署在kube-apiserver部署的服务器上面服务器的配置等在这就不在列出来

  二进制文件以及包含在kube-apiserver一起所以不在进行二进制的下载跟分发

  2、生成kube-controller-manager访问kube-apiserver 证书

  cat << EOF | tee /apps/work/k8s/cfssl/k8s/k8s_controller_manager.json

  {

  "CN": "system:kube-controller-manager",

  "hosts": [""],

  "key": {

  "algo": "rsa",

  "size": 2048

  },

  "names": [

  {

  "C": "CN",

  "ST": "GuangDong",

  "L": "GuangZhou",

  "O": "system:kube-controller-manager",

  "OU": "Kubernetes-manual"

  }

  ]

  }

  EOF

  ## 生成 Kubernetes Controller Manager 证书和私钥

  cfssl gencert

  -ca=/apps/work/k8s/cfssl/pki/k8s/k8s-ca.pem

  -ca-key=/apps/work/k8s/cfssl/pki/k8s/k8s-ca-key.pem

  -config=/apps/work/k8s/cfssl/ca-config.json

  -profile=kubernetes

  /apps/work/k8s/cfssl/k8s/k8s_controller_manager.json |

  cfssljson -bare /apps/work/k8s/cfssl/pki/k8s/k8s_controller_manager

  3、创建kube_controller_manager.kubeconfig

  cd /apps/work/k8s/kubernetes/server/config

  kubectl config set-cluster kubernetes

  --certificate-authority=/apps/work/k8s/cfssl/pki/k8s/k8s-ca.pem

  --embed-certs=true

  --server=https://192.168.3.10:5443

  --kubeconfig=kube_controller_manager.kubeconfig

  kubectl config set-credentials system:kube-controller-manager

  --client-certificate=/apps/work/k8s/cfssl/pki/k8s/k8s_controller_manager.pem

  --embed-certs=true

  --client-key=/apps/work/k8s/cfssl/pki/k8s/k8s_controller_manager-key.pem

  --kubeconfig=kube_controller_manager.kubeconfig

  kubectl config set-context kubernetes

  --cluster=kubernetes

  --user=system:kube-controller-manager

  --kubeconfig=kube_controller_manager.kubeconfig

  kubectl config use-context kubernetes --kubeconfig=kube_controller_manager.kubeconfig

  说明:--server=https://192.168.3.10:5443 为每台kube-apiserver IP加端口不使用vip ip 连接

  4、kube-controller-manager 一些特殊参数的说明

  service-account-private-key-file 参数必须与 kube-apiserver 参数service-account-key-file 配对不然自动签发证书会失败没权限

  cluster-cidr 参数docker 集群网段 service-cluster-ip-range 参数k8s 集群网段

  node-cidr-mask-size k8s node 节点子网

  5、创建kube-controller-manager 启动配置 所有服务器配置一样

  说明: --address不能是服务器ip如果写服务器的ip kubectl get cs 就会报错

  cd /apps/work/k8s/kubernetes/server/conf

  vi kube-controller-manager

  KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=false

  --leader-elect=true

  --address=0.0.0.0

  --service-cluster-ip-range=10.64.0.0/16

  --cluster-cidr=10.48.0.0/12

  --node-cidr-mask-size=24

  --cluster-name=kubernetes

  --allocate-node-cidrs=true

  --kubeconfig=/apps/kubernetes/config/kube_controller_manager.kubeconfig

  --authentication-kubeconfig=/apps/kubernetes/config/kube_controller_manager.kubeconfig

  --authorization-kubeconfig=/apps/kubernetes/config/kube_controller_manager.kubeconfig

  --use-service-account-credentials=true

  --client-ca-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem

  --requestheader-client-ca-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem

  --node-monitor-grace-period=40s

  --node-monitor-period=5s

  --pod-eviction-timeout=5m0s

  --terminated-pod-gc-threshold=50

  --alsologtostderr=true

  --cluster-signing-cert-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem

  --cluster-signing-key-file=/apps/kubernetes/ssl/k8s/k8s-ca-key.pem

  --deployment-controller-sync-period=10s

  --experimental-cluster-signing-duration=86700h0m0s

  --enable-garbage-collector=true

  --root-ca-file=/apps/kubernetes/ssl/k8s/k8s-ca.pem

  --service-account-private-key-file=/apps/kubernetes/ssl/k8s/k8s-ca-key.pem

  --feature-gates=RotateKubeletServerCertificate=true,RotateKubeletClientCertificate=true

  --controllers=*,bootstrapsigner,tokencleaner

  --horizontal-pod-autoscaler-use-rest-clients=true

  --horizontal-pod-autoscaler-sync-period=10s

  --flex-volume-plugin-dir=/apps/kubernetes/kubelet-plugins/volume

  --tls-cert-file=/apps/kubernetes/ssl/k8s/k8s_controller_manager.pem

  --tls-private-key-file=/apps/kubernetes/ssl/k8s/k8s_controller_manager-key.pem

  --kube-api-qps=100

  --kube-api-burst=100

  --log-dir=/apps/kubernetes/log

  --v=2"

  6、创建kube-controller-manager.service 启动文件

  cd /apps/work/k8s/kubernetes/

  vim kube-controller-manager.service

  [Unit]

  Description=Kubernetes Controller Manager

  Documentation=https://github.com/kubernetes/kubernetes

  [Service]

  LimitNOFILE=1024000

  LimitNPROC=1024000

  LimitCORE=infinity

  LimitMEMLOCK=infinity

  EnvironmentFile=-/apps/kubernetes/conf/kube-controller-manager

  ExecStart=/apps/kubernetes/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_OPTS

  Restart=on-failure

  RestartSec=5

  User=k8s

  [Install]无锡妇科医院哪家好 http://www.xasgyy.net/

  WantedBy=multi-user.target

  7、分发kube-controller-manager 配置文件启动文件

  说明: 使用ansible 分发时kube_controller_manager.kubeconfig server=https://192.168.3.10:5443 可以使用参数进行分发

  server=https://{{ ansible_ssh_host }}:5443 这样就不用每次修改修改 ansible_ssh_host 参数就是连接远程服务器ip

  分发 kube_controller_manager.kubeconfig

  ansible -i host master -m template -a "src=server/config/kube_controller_manager.kubeconfig dest=/apps/kubernetes/config owner=k8s group=root mode=644"

  分发:kube-controller-manager

  ansible -i host master -m copy -a "src=server/conf/kube-controller-manager dest=/apps/kubernetes/conf owner=k8s group=root mode=644"

  分发:kube-controller-manager.service

  ansible -i host master -m copy -a "src=kube-controller-manager.service dest=/usr/lib/systemd/system/kube-controller-manager.service"

  8、启动kube-controller-manager

  ansible -i host master -m shell -a "systemctl daemon-reload"

  ansible -i host master -m shell -a "systemctl enable kube-controller-manager"

  ansible -i host master -m shell -a "systemctl start kube-controller-manager"

  ansible -i host master -m shell -a "systemctl status kube-controller-manager"

  9、查看kube-controller-manager 是否配置成功

  kubectl get cs

  [root@jenkins bin]# kubectl get cs

  NAME STATUS MESSAGE ERROR

  controller-manager Healthy ok

  scheduler Healthy ok

  etcd-4 Healthy {"health":"true"}

  etcd-3 Healthy {"health":"true"}

  etcd-5 Healthy {"health":"true"}

  etcd-0 Healthy {"health":"true"}

  etcd-1 Healthy {"health":"true"}

  etcd-2 Healthy {"health":"true"}

  10 、配置 kube-controller-manager,kubelet 、kube-scheduler 访问kube-api 用户授权

  授予 kubernetes API 的权限

  kubectl create clusterrolebinding controller-node-clusterrolebing --clusterrole=system:kube-controller-manager --user=system:kube-controller-manager

  kubectl create clusterrolebinding scheduler-node-clusterrolebing --clusterrole=system:kube-scheduler --user=system:kube-scheduler

  kubectl create clusterrolebinding controller-manager:system:auth-delegator --user system:kube-controller-manager --clusterrole system:auth-delegator

  授予 kubernetes 证书访问 kubelet API 的权限

  kubectl create clusterrolebinding --user system:serviceaccount:kube-system:default kube-system-cluster-admin --clusterrole cluster-admin

  kubectl create clusterrolebinding kubelet-node-clusterbinding --clusterrole=system:node --group=system:nodes

  kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes

免责声明:文章转载自《关于Kubernetes v1.14.0的 kube-controller-manager部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux开机关机自启动或自关闭服务的方式mybatis-plus 代码生成器(Swagger2、自定义模板)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

webpack入门(转载)

     阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过;如果你和十天前的我一样,对很多选项存在着疑惑,那花一段时间慢慢阅读本文,你的疑惑一定一个一个都会消失;如果你以前没怎么接触过Webpack,如果你对webpack感兴趣,本文中有一个贯穿始终的例子,如果你能把这个例子...

windows下《七天学会NodeJS》学习笔记之一--NodeJS基础

什么是NodeJS。浏览器可以解析JS,NodeJS也可以解析JS,它就是一个JS的解析器。浏览器利用JS操作DOM,而NodeJS利用JS操作磁盘文件或搭建HTTP服务器。NodeJS的作者创造NodeJS的目的是为了实现高性能的Web服务器,所以他首先看重的是事件机制和异步IO模型的优越性。 安装nodejs,可能考本博客中的 windows...

为npm设置代理

npm全称为Node Packaged Modules。它是一个用于管理基于node.js编写的package的命令行工具。其本身就是基于node.js写的,这有点像gem与ruby的关系。 在我们的项目中,需要使用一些基于node.js的javascript库文件,就需要npm对这些依赖库进行方便的管理。由于我们的开发环境由于安全因素在访问一些网站时需要...

Ansible入门

自动化运维常识 运维工作   系统安装   物理机、虚拟机   程序包  安装、配置、服务启动   批量操作   程序发布   监控 运维层次   OS previsioning     物理机 PXE、Cobbler(选择多版本操作系统)     虚拟机 Image Templates   Configuration     puppet (ruby)...

Kubernetes监控etcd集群(自带metrics接口)

Kubernetes用operator部署prometheus上面采用Kubernetes部署prometheus 我们可以使用prometheus来监控自带metrics接口的应用。 etcd是Kubernetes的数据库,自带接口,我们可以用etcd作为实例来看看怎么操作。 一、监控etcd集群 1.1、查看接口信息 二进制和kubeadm安装方式...

记Git保存本地密码与删除本地缓存

参考: https://www.jianshu.com/p/77b0340a02f3 https://blog.csdn.net/yunlong782/article/details/50887833?locationNum=7&fps=1 保存密码 git有三种策略查找用户名密码:去缓存中找,去磁盘中找,去钥匙串中找。 ~/User/用户...