inushome 发表于 2018-9-15 12:17:35

手动安装K8s第四节:Master节点

  0、准备软件包
  cd /usr/local/src/kubernetes
  # cp server/bin/kube-apiserver /opt/kubernetes/bin/
  # cp server/bin/kube-controller-manager /opt/kubernetes/bin/
  # cp server/bin/kube-scheduler /opt/kubernetes/bin/
  1、创建生成CSR的 JSON 配置文件
  # cd /usr/local/src/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 证书和私钥
  # 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 generate received request
  2018/06/12 19:02:13 received CSR
  2018/06/12 19:02:13 generating key: rsa-2048
  2018/06/12 19:02:14 encoded CSR
  2018/06/12 19:02:14 signed certificate with serial number 386147679531467996147945114491457426445592492176
  2018/06/12 19:02:14 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").
  # ll
  -rw-r--r-- 1 root root 1245 Jun 12 19:02 kubernetes.csr
  -rw-r--r-- 1 root root437 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
  # cp kubernetes.pem /opt/kubernetes/ssl/
  # scp kubernetes.pem k8snode1:/opt/kubernetes/ssl/
  # scp kubernetes*.pem k8snode2:/opt/kubernetes/ssl/
  3、创建 kube-apiserver 使用的客户端 token 文件
  # head -c 16 /dev/urandom | od -An -t x | tr -d ' '
  ad6d5bb607a186796d8861557df0d17f
  # vim /opt/kubernetes/ssl/bootstrap-token.csv
  ad6d5bb607a186796d8861557df0d17f,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
  4、创建基础用户名/密码认证配置
  # vim /opt/kubernetes/ssl/basic-auth.csv
  admin,admin,1
  readonly,readonly,2
  5、部署Kubernetes API Server
  # vim /usr/lib/systemd/system/kube-apiserver.service
  
  Description=Kubernetes API Server
  Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  After=network.target
  
  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
  
  WantedBy=multi-user.target
  6、启动API Server服务
  # systemctl daemon-reload
  # systemctl enable kube-apiserver
  # systemctl start kube-apiserver
  # systemctl status kube-apiserver
  # 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服务
  # vim /usr/lib/systemd/system/kube-controller-manager.service
  
  Description=Kubernetes Controller Manager
  Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  
  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
  
  WantedBy=multi-user.target
  # systemctl daemon-reload
  # systemctl enable kube-controller-manager
  # systemctl start kube-controller-manager
  # systemctl status kube-controller-manager
  # 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
  #
  8、部署Kubernetes Scheduler
  # vim /usr/lib/systemd/system/kube-scheduler.service
  
  Description=Kubernetes Scheduler
  Documentation=https://github.com/GoogleCloudPlatform/kubernetes
  
  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
  
  WantedBy=multi-user.target
  # systemctl daemon-reload
  # systemctl enable kube-scheduler
  # systemctl start kube-scheduler
  # systemctl status kube-scheduler

页: [1]
查看完整版本: 手动安装K8s第四节:Master节点