Linux服务器配置
- 关闭交换分区
[root@localhost kubelet] swapoff -a
[root@localhost kubelet] vi /etc/fstab
- 关闭selinux
[root@localhost kubelet] vim /etc/sysconfig/selinux
[root@localhost kubelet] setenforce 0
- 关闭防火墙
[root@localhost kubelet] systemctl disable firewalld
[root@localhost kubelet] systemctl stop firewalld
安装docker
- 卸载旧docker
[root@localhost kubelet] yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 安装工具
[root@localhost kubelet] yum install -y yum-utils device-mapper-persistent-data lvm2
- 配置docker的yum源
[root@localhost kubelet] yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost kubelet] yum-config-manager --enable docker-ce-nightly
[root@localhost kubelet] yum-config-manager --enable docker-ce-test
- 安装docker
[root@localhost kubelet] yum install docker-ce docker-ce-cli containerd.io
[root@localhost kubelet] systemctl start docker
[root@localhost kubelet] systemctl status docker
[root@localhost kubelet] systemctl enable docker
安装kuebrnetes
- 配置kuebrnetes的yum源
[root@localhost kubelet] vim kuebrnetes.repo
[kuebrnetes]
name=Kuebrnetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
- 安装kubeadm
[root@localhost kubelet] yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
- 启动kubelet
[root@localhost kubelet] systemctl start kubelet
[root@localhost kubelet] systemctl enable kubelet
- 打印初始配置
[root@localhost kubelet] kubeadm config print init-defaults --v=5 > init.default.yaml
- 编辑初始配置
[root@localhost kubelet] vim init.default.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 10.180.249.80 //master主机IP
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8smaster
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.17.0
networking:
podSubnet: "192.168.0.0/16"
serviceSubnet: 10.96.0.0/12
scheduler: {}
- 拉取镜像
[root@localhost kubelet] mv init.default.yaml init-config.yaml
[root@localhost kubelet] kubeadm config images pull --config=init-config.yaml
- 安装Master
[root@localhost kubelet] kubeadm init --config=init-config.yaml
[root@localhost kubelet] mkdir -p $HOME/.kube
[root@localhost kubelet] cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@localhost kubelet] chown $(id -u):$(id -g) $HOME/.kube/config
- 添加node
前提条件:node节点已安装docker,且已配置好kuebrnetes的yum源
[root@localhost kubelet] yum install kubelet kubeadm --disableexcludes=kubernetes
[root@localhost kubelet] systemctl enable kubelet
[root@localhost kubelet] systemctl start kubelet
[root@localhost kubelet] vim join-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: JoinConfiguration
discovery:
bootstrapToken:
apiServerEndpoint: 10.180.249.80:6443
token: abcdef.0123456789abcdef
unsafeSkipCAVerification: true
tlsBootstrapToken: abcdef.0123456789abcdef
[root@localhost kubelet] kubeadm join --config=join-config.yaml
在master节点查看node信息:kubectl get nodes
- 配置网络
[root@localhost kubelet] kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version)|base 64|tr -d '\n'"
- 配置flannel网络
[root@localhost kubelet] docker pull easzlab/flannel:v0.11.0-amd64 && docker tag easzlab/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64//每个节点都执行
[root@localhost kubelet] wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@localhost kubelet] vim kube-flannel.yml //注意network配置
[root@localhost kubelet] kubectl apply -f kube-flannel.yml
查看pod信息
[root@localhost kubelet] kubectl get pods --all-namespaces
[root@localhost kubelet] kubectl --namespace=kube-system describe pod <pod>
[root@localhost kubelet] docker pull docker.io/weaveworks/weave-kube:2.6.0