准备工作
4G内存 20G硬盘 必须2CPU核
永久关闭swap
空间:先vim /etc/fstab
加#
注释掉所有swap
分区,然后重启机器
安装docker
安装kubectl kubeadm kubelet
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
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 kubernetes-cni=0.6.0-00 后
apt-get install -y kubelet=1.13.1-00 kubeadm=1.13.1-00 --allow-unauthenticated
apt-get install -y kubectl=1.13.1-00 --allow-downgrades --allow-unauthenticated
有可能已经安装了高版本的kubeadm,k8s-v1.13.1用不了,则
卸载 apt-get remove -y kubelet kubeadm kubectl
安装指定版本 apt-get install -y kubelet =1.13.1-00
提示
kubelet : Depends: kubernetes-cni (= 0.6.0) but 0.7.5-00 is to be installed
卸载 apt-get remove kubernetes-cni
安装指定版本 apt-get install kubernetes-cni=0.6.0-00 后,再指定kubectl 版本,如上。
kubeadm创建一个集群
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=192.167.0.0/16 \
--ignore-preflight-errors=cri \
--kubernetes-version=1.13.1
耐心等待后出现:
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join 172.0.1.5:6443 --token to697t.fdu5pffmr0862z8g --discovery-token-ca-cert-hash sha256:1....
根据提示,mkdir...之后,就可以用命令查看k8s状态了
kubectl get nodes
kubectl describe node ubuntudesk
kubectl get pods -n kube-system
master结点跑业务pod
kubectl taint nodes --all node-role.kubernetes.io/master-
这个步骤的配置最终使Master节点能允许运行用户pod,也是确保下面插件部署能正确运行。
安装网络插件flannel
kube-flannel.yml
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: flannel
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- apiGroups:
- ""
resources:
- nodes
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- nodes/status
verbs:
- patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: flannel
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: flannel
subjects:
- kind: ServiceAccount
name: flannel
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: flannel
namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-flannel-cfg
namespace: kube-system
labels:
tier: node
app: flannel
data:
cni-conf.json: |
{
"name": "cbr0",
"plugins": [
{
"type": "flannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
},
{
"type": "portmap",