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

[经验分享] 手动安装K8s第四节:Master节点

[复制链接]

尚未签到

发表于 2018-9-15 12:17:35 | 显示全部楼层 |阅读模式
  0、准备软件包
  cd /usr/local/src/kubernetes
  [root@k8smaster kubernetes]# cp server/bin/kube-apiserver /opt/kubernetes/bin/
  [root@k8smaster kubernetes]# cp server/bin/kube-controller-manager /opt/kubernetes/bin/
  [root@k8smaster kubernetes]# cp server/bin/kube-scheduler /opt/kubernetes/bin/
  1、创建生成CSR的 JSON 配置文件
  [root@k8smaster ~]# cd /usr/local/src/ssl/
  [root@k8smaster ssl]# vim kubernetes-csr.json
  {
  "CN": "kubernetes",
  "hosts": [
  "127.0.0.1",
  "192.168.137.171",
  "10.1.0.1",
  "kubernetes",
  "kubernetes.default",
  "kubernetes.default.svc",
  "kubernetes.default.svc.cluster",
  "kubernetes.default.svc.cluster.local"
  ],
  "key": {
  "algo": "rsa",
  "size": 2048
  },
  "names": [
  {
  "C": "CN",
  "ST": "BeiJing",
  "L": "BeiJing",
  "O": "k8s",
  "OU": "System"
  }
  ]
  }
  2、生成 kubernetes 证书和私钥
  [root@k8smaster ssl]# cfssl gencert -ca=/opt/kubernetes/ssl/ca.pem \
  -ca-key=/opt/kubernetes/ssl/ca-key.pem \
  -config=/opt/kubernetes/ssl/ca-config.json \
  -profile=kubernetes kubernetes-csr.json | cfssljson -bare kubernetes
  2018/06/12 19:02:13 [INFO] generate received request
  2018/06/12 19:02:13 [INFO] received CSR
  2018/06/12 19:02:13 [INFO] generating key: rsa-2048
  2018/06/12 19:02:14 [INFO] encoded CSR
  2018/06/12 19:02:14 [INFO] signed certificate with serial number 386147679531467996147945114491457426445592492176
  2018/06/12 19:02:14 [WARNING] This certificate lacks a "hosts" field. This makes it unsuitable for
  websites. For more information see the Baseline Requirements for the Issuance and Management
  of Publicly-Trusted Certificates, v.1.1.6, from the CA/Browser Forum (https://cabforum.org);
  specifically, section 10.2.3 ("Information Requirements").
  [root@k8smaster ssl]# ll
  -rw-r--r-- 1 root root 1245 Jun 12 19:02 kubernetes.csr
  -rw-r--r-- 1 root root  437 Jun 12 19:01 kubernetes-csr.json
  -rw------- 1 root root 1679 Jun 12 19:02 kubernetes-key.pem
  -rw-r--r-- 1 root root 1610 Jun 12 19:02 kubernetes.pem
  [root@k8smaster ssl]# cp kubernetes.pem /opt/kubernetes/ssl/
  [root@k8smaster ssl]# scp kubernetes.pem k8snode1:/opt/kubernetes/ssl/
  [root@k8smaster ssl]# scp kubernetes*.pem k8snode2:/opt/kubernetes/ssl/
  3、创建 kube-apiserver 使用的客户端 token 文件
  [root@k8smaster ~]# head -c 16 /dev/urandom | od -An -t x | tr -d ' '
  ad6d5bb607a186796d8861557df0d17f
  [root@k8smaster ~]# vim /opt/kubernetes/ssl/bootstrap-token.csv
  ad6d5bb607a186796d8861557df0d17f,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
  4、创建基础用户名/密码认证配置
  [root@k8smaster ~]# vim /opt/kubernetes/ssl/basic-auth.csv
  admin,admin,1
  readonly,readonly,2
  5、部署Kubernetes API Server
  [root@k8smaster ~]# vim /usr/lib/systemd/system/kube-apiserver.service
  [Unit]
  Description=Kubernetes API Server
  Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  After=network.target
  [Service]
  ExecStart=/opt/kubernetes/bin/kube-apiserver \
  --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction \
  --bind-address=192.168.137.171 \
  --insecure-bind-address=127.0.0.1 \
  --authorization-mode=Node,RBAC \
  --runtime-config=rbac.authorization.k8s.io/v1 \
  --kubelet-https=true \
  --anonymous-auth=false \
  --basic-auth-file=/opt/kubernetes/ssl/basic-auth.csv \
  --enable-bootstrap-token-auth \
  --token-auth-file=/opt/kubernetes/ssl/bootstrap-token.csv \
  --service-cluster-ip-range=10.1.0.0/16 \
  --service-node-port-range=20000-40000 \
  --tls-cert-file=/opt/kubernetes/ssl/kubernetes.pem \
  --tls-private-key-file=/opt/kubernetes/ssl/kubernetes-key.pem \
  --client-ca-file=/opt/kubernetes/ssl/ca.pem \
  --service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
  --etcd-cafile=/opt/kubernetes/ssl/ca.pem \
  --etcd-certfile=/opt/kubernetes/ssl/kubernetes.pem \
  --etcd-keyfile=/opt/kubernetes/ssl/kubernetes-key.pem \
  --etcd-servers=https://192.168.137.171:2379,https://192.168.137.201:2379,https://192.168.137.198:2379 \
  --enable-swagger-ui=true \
  --allow-privileged=true \
  --audit-log-maxage=30 \
  --audit-log-maxbackup=3 \
  --audit-log-maxsize=100 \
  --audit-log-path=/opt/kubernetes/log/api-audit.log \
  --event-ttl=1h \
  --v=2 \
  --logtostderr=false \
  --log-dir=/opt/kubernetes/log
  Restart=on-failure
  RestartSec=5
  Type=notify
  LimitNOFILE=65536
  [Install]
  WantedBy=multi-user.target
  6、启动API Server服务
  [root@k8smaster ~]# systemctl daemon-reload
  [root@k8smaster ~]# systemctl enable kube-apiserver
  [root@k8smaster ~]# systemctl start kube-apiserver
  [root@k8smaster ~]# systemctl status kube-apiserver
  [root@k8smaster ~]# netstat -ntlp
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
  tcp        0      0 192.168.137.171:6443    0.0.0.0:               LISTEN      4185/kube-apiserver
  tcp        0      0 192.168.137.171:2379    0.0.0.0:               LISTEN      3955/etcd
  tcp        0      0 127.0.0.1:2379          0.0.0.0:               LISTEN      3955/etcd           
  tcp        0      0 192.168.137.171:2380    0.0.0.0:               LISTEN      3955/etcd
  tcp        0      0 127.0.0.1:8080          0.0.0.0:               LISTEN      4185/kube-apiserver
  tcp        0      0 0.0.0.0:22              0.0.0.0:               LISTEN      1154/sshd
  tcp        0      0 127.0.0.1:25            0.0.0.0:               LISTEN      1239/master         
  tcp6       0      0 :::22                   :::                    LISTEN      1154/sshd
  tcp6       0      0 ::1:25                  :::*                    LISTEN      1239/master
  7、部署Controller Manager服务
  [root@k8smaster ~]# vim /usr/lib/systemd/system/kube-controller-manager.service
  [Unit]
  Description=Kubernetes Controller Manager
  Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  [Service]
  ExecStart=/opt/kubernetes/bin/kube-controller-manager \
  --address=127.0.0.1 \
  --master=http://127.0.0.1:8080 \
  --allocate-node-cidrs=true \
  --service-cluster-ip-range=10.1.0.0/16 \
  --cluster-cidr=10.2.0.0/16 \
  --cluster-name=kubernetes \
  --cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem \
  --cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem \
  --service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem \
  --root-ca-file=/opt/kubernetes/ssl/ca.pem \
  --leader-elect=true \
  --v=2 \
  --logtostderr=false \
  --log-dir=/opt/kubernetes/log
  Restart=on-failure
  RestartSec=5
  [Install]
  WantedBy=multi-user.target
  [root@k8smaster ~]# systemctl daemon-reload
  [root@k8smaster ~]# systemctl enable kube-controller-manager
  [root@k8smaster ~]# systemctl start kube-controller-manager
  [root@k8smaster ~]# systemctl status kube-controller-manager
  [root@k8smaster ~]# netstat -ntlp
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
  tcp        0      0 192.168.137.171:6443    0.0.0.0:               LISTEN      4185/kube-apiserver
  tcp        0      0 192.168.137.171:2379    0.0.0.0:               LISTEN      3955/etcd
  tcp        0      0 127.0.0.1:2379          0.0.0.0:               LISTEN      3955/etcd           
  tcp        0      0 127.0.0.1:10252         0.0.0.0:               LISTEN      4239/kube-controlle
  tcp        1      0 192.168.137.171:2380    0.0.0.0:               LISTEN      3955/etcd           
  tcp        0      0 127.0.0.1:8080          0.0.0.0:               LISTEN      4185/kube-apiserver
  tcp        0      0 0.0.0.0:22              0.0.0.0:               LISTEN      1154/sshd           
  tcp        0      0 127.0.0.1:25            0.0.0.0:               LISTEN      1239/master
  tcp6       0      0 :::22                   :::                    LISTEN      1154/sshd           
  tcp6       0      0 ::1:25                  :::                    LISTEN      1239/master
  [root@k8smaster ~]#
  8、部署Kubernetes Scheduler
  [root@k8smaster ~]# vim /usr/lib/systemd/system/kube-scheduler.service
  [Unit]
  Description=Kubernetes Scheduler
  Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  [Service]
  ExecStart=/opt/kubernetes/bin/kube-scheduler \
  --address=127.0.0.1 \
  --master=http://127.0.0.1:8080 \
  --leader-elect=true \
  --v=2 \
  --logtostderr=false \
  --log-dir=/opt/kubernetes/log
  Restart=on-failure
  RestartSec=5
  [Install]
  WantedBy=multi-user.target
  [root@k8smaster ~]# systemctl daemon-reload
  [root@k8smaster ~]# systemctl enable kube-scheduler
  [root@k8smaster ~]# systemctl start kube-scheduler
  [root@k8smaster ~]# systemctl status kube-scheduler


运维网声明 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-583527-1-1.html 上篇帖子: Kubernetes Dashboard 与DNS部署 下篇帖子: kubernetes V1.10.4 单节点部署 (手动生成证书)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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