k8s-master: $ hostnamectl set-hostname k8s-master && bash k8s-slave1: $ hostnamectl set-hostname k8s-slave1 && bash k8s-slave2: $ hostnamectl set-hostname k8s-slave2 && bash
[root@k8s-master ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.3.153.200 k8s-master 10.3.153.201 k8s-slave1 10.3.153.202 k8s-slave2
一、關閉swap使用 $ swapoff -a $ sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab 二、關閉selinux和防火牆 $ sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config setenforce 0 $ systemctl disable firewalld && systemctl stop firewalld 三、修改內核參數 vi /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward=1 vm.max_map_count=262144 四、內核參數生效 $ modprobe br_netfilter && sysctl -p /etc/sysctl.d/k8s.conf 五、設置相應yun源(刪除當前全部/etc/yum.repos.d/*.repo) $ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo $ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo $ cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF $ yum clean all && yum makecache
一、安裝docker-ce社區版(指定了相應的版本) $ yum install docker-ce-cli-18.09.9-3.el7 docker-ce-18.09.9-3.el7 二、啓動docker $ systemctl enable docker && systemctl start docker
$ yum install -y kubelet-1.16.2 kubeadm-1.16.2 kubectl-1.16.2 --disableexcludes=kubernetes $ systemctl enable kubelet 備註:安裝無缺,可能經過如下命令驗證 $ kubeadmin version
$ kubeadm config print init-defaults > kubeadm.yaml $ cat kubeadm.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.3.153.200 # apiserver地址,由於單master,因此配置master的節點內網IP bindPort: 6443 nodeRegistration: criSocket: /var/run/dockershim.sock name: k8s-master 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.16.0 networking: dnsDomain: cluster.local podSubnet: 10.244.0.0/16 #指定pod運行的子網 serviceSubnet: 10.96.0.0/12 scheduler: {}
$ kubeadm init --config kubeadm.yaml #如下命令待上面命令執行成功後執行: $ mkdir -p $HOME/.kube $ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config $ sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubeadm join 10.3.153.200:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:a2300a66a90689f28b15e04a72b4c297158202fb5b37da638516a0b773be6b62 備註:token爲上面的master安裝完後生成
備註:當前狀態爲NotReady,需安裝網絡插件flannelnode
$ wget https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml $ vi kube-flannel.yml #修改配置,指定網卡名稱,大概在文件的190行,添加一行配置:
執行安裝flannel插件 $ kubectl create -f kube-flannel.yml
$ kubectl run test-nginx --image=nginx:alpine