master节点部署
部署
安装部署工具
apt-get update && apt-get install -y apt-transport-https curl
apt-get install docker.io
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
apt-mark hold kubelet kubeadm kubectl拉取基础镜像
docker pull gcrxio/kube-proxy:v1.12.1
docker pull gcrxio/kube-scheduler:v1.12.1
docker pull gcrxio/kube-apiserver:v1.12.1
docker pull gcrxio/kube-controller-manager:v1.12.1
docker pull gcrxio/coredns:1.2.2
docker pull gcrxio/etcd:3.2.24
docker pull quay.io/coreos/flannel:v0.10.0-amd64
docker pull gcrxio/pause-amd64:3.1
docker pull gcrxio/pause:3.1
docker tag gcrxio/kube-proxy:v1.12.1 k8s.gcr.io/kube-proxy:v1.12.1
docker tag gcrxio/kube-scheduler:v1.12.1 k8s.gcr.io/kube-scheduler:v1.12.1
docker tag gcrxio/kube-apiserver:v1.12.1 k8s.gcr.io/kube-apiserver:v1.12.1
docker tag gcrxio/kube-controller-manager:v1.12.1 k8s.gcr.io/kube-controller-manager:v1.12.1
docker tag gcrxio/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker tag gcrxio/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag quay.io/coreos/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker tag gcrxio/pause-amd64:3.1 k8s.gcr.io/pause-amd64:3.1
docker tag gcrxio/pause:3.1 k8s.gcr.io/pause:3.1 创建kubeadm-config.yml 配置文件
apiVersion: kubeadm.k8s.io/v1alpha3
kind: ClusterConfiguration
kubernetesVersion: v1.12.1
apiServerCertSANs:
- "192.168.1.66"
controlPlaneEndpoint: "192.168.1.66:6443"
etcd:
external:
endpoints:
- http://192.168.1.94:2379
- http://192.168.1.66:2379
- http://192.168.1.22:2379
networking:
# This CIDR is a Calico default. Substitute or remove for your CNI provider.
podSubnet: "10.244.0.0/16"配置环境变量
vim /root/.bashrc
export KUBECONFIG="/etc/kubernetes/admin.conf"
source ~/.bashrc启动master节点
kubeadm init --config=kubeadm-config.yml --ignore-preflight-errors=all启动flannel覆盖网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml部署kubernetes-dashboard
发布CA证书
kubectl create secret generic kubernetes-dashboard-certs --from-file=/certs -n kube-system证书文件命名
/certs/dashboard.crt
/certs/dashboard.key创建管理员账号
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: dashboard-cluster-admin
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard-admin
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kubernetes-dashboard-admin
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
部署dashboard
# ------------------- Dashboard Deployment ------------------- #
kind: Deployment
apiVersion: apps/v1beta2
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s-app: kubernetes-dashboard
template:
metadata:
labels:
k8s-app: kubernetes-dashboard
spec:
containers:
- name: kubernetes-dashboard
imagePullPolicy: Never
image: gcrxio/kubernetes-dashboard-amd64:v1.10.0
ports:
- containerPort: 8443
protocol: TCP
args:
- --auto-generate-certificates
# 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://my-address:port
volumeMounts:
- name: kubernetes-dashboard-certs
mountPath: /certs
# Create on-disk volume to store exec logs
- mountPath: /tmp
name: tmp-volume
livenessProbe:
httpGet:
scheme: HTTPS
path: /
port: 8443
initialDelaySeconds: 30
timeoutSeconds: 30
volumes:
- name: kubernetes-dashboard-certs
secret:
secretName: kubernetes-dashboard-certs
- name: tmp-volume
emptyDir: {}
serviceAccountName: kubernetes-dashboard-admin
# Comment the following tolerations if Dashboard must not be deployed on master
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
---
# ------------------- Dashboard Service ------------------- #
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30000
selector:
k8s-app: kubernetes-dashboard
最后编辑: 马运宝 文档更新时间: 2021-01-08 14:32 作者:马运宝