kubeadm-安装k8s1.15

1568人浏览 / 0人评论

一、环境要求

服务器配置最低不能低于2核2G

二、安装docker-ce

#所有节点
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum list docker-ce --showduplicates
#安装指定版本的docker
yum install docker-ce-18.09.7 -y

检查

[root@k8s-node1 docker_rpm]# docker version
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false
 

 二、安装kubeadm、kubectl、kubelet

配置阿里云源,所有节点配置

[root@k8s-node1 docker_rpm]# cat /etc/yum.repos.d/kubernetes.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

 所有节点安装

yum install kubelet-1.15.12 kubeadm-1.15.12 kubectl-1.15.12 -y

 三、初始化集群

启动docker

所有节点配置

[root@k8s-master-01 docker_rpm]# cat /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@k8s-master-01 docker_rpm]# systemctl restart docker

[root@k8s-master-01 docker_rpm]#docker info   ##没有警告就行

 

关闭swap

临时关闭  swapoff -a

永久关闭   vim /etc/fstab   #掉swap

控制节点,master节点执行

所有节点都执行配置docker配置文件
[root@k8s-master-01 docker_rpm]# cat  /etc/docker/daemon.json
{
 "exec-opts": ["native.cgroupdriver=systemd"]
}

重启docker
[root@k8s-master-01 docker_rpm]# systemctl restart docker


kubeadm init --kubernetes-version=v1.15.12 --image-repository registry.aliyuncs.com/google_containers  --pod-network-cidr=10.244.0.0/16 --service-cidr=10.254.0.0/16

 

 按照报错提示进行修改

所有节点操作

[root@kubernetes-node1 docker_rpm]# cat /etc/hosts

10.0.0.111 kubernetes-master
10.0.0.112 kubernetes-node1
 

node节点操作

[root@k8s-node1 docker_rpm]# hostnamectl set-hostname kubernetes-node1

master节点操作

[root@k8s-node1 docker_rpm]# hostnamectl set-hostname kubernetes-master

master节点操作

systemctl enable docker.service

systemctl enable kubelet.service

master节点操作

[root@k8s-master-01 docker_rpm]# mkdir -p $HOME/.kube
[root@k8s-master-01 docker_rpm]#   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master-01 docker_rpm]#   sudo chown $(id -u):$(id -g) $HOME/.kube/config
 

node节点按照master节点的提示进行执行

 kubeadm join 10.0.0.111:6443 --token fafsq5.axnpfv6lyni4m22l \
    --discovery-token-ca-cert-hash sha256:c847bff2ca59d06a0ea40d2dfe5755a674ca3ce17dc278d1236b2954d2b52d80 

 

systemctl enable kubelet.service
systemctl enable docker.service

如果重启docker失败了,请检查daemon.json文件后面的空格

 

 master节点可以查看

kubectl -n kube-system get cm kubeadm-config -oyaml

进行检查

[root@k8s-master-01 docker_rpm]# kubectl get nodes
NAME               STATUS     ROLES    AGE     VERSION
k8s-master-01      NotReady   master   8m53s   v1.15.12
kubernetes-node1   NotReady   <none>   7m      v1.15.12
 

[root@k8s-master-01 docker_rpm]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-0               Healthy   {"health":"true"}   
 

 [root@k8s-master-01 docker_rpm]# kubectl get pod --all-namespaces 
NAMESPACE     NAME                                    READY   STATUS    RESTARTS   AGE
kube-system   coredns-94d74667-nmcqv                  0/1     Pending   0          11m
kube-system   coredns-94d74667-x94zh                  0/1     Pending   0          11m
kube-system   etcd-k8s-master-01                      1/1     Running   0          11m
kube-system   kube-apiserver-k8s-master-01            1/1     Running   0          11m
kube-system   kube-controller-manager-k8s-master-01   1/1     Running   0          11m
kube-system   kube-proxy-hz4nr                        0/1     Error     0          10m
kube-system   kube-proxy-zvnnw                        1/1     Running   0          11m
kube-system   kube-scheduler-k8s-master-01            1/1     Running   0          11m

 

二、token过期解决

客户端的token默认是一天过期

创建token

[root@k8s-master-01 docker_rpm]# kubeadm token create --print-join-command

查看证书

[root@k8s-master-01 docker_rpm]# kubeadm token list
 

三、配置网络flannel

pull镜像

所有节点都操作

docker pull quay.io/coreos/flannel:v0.12.0-amd64

master节点执行

[root@k8s-master-01 k8s_yaml]# kubectl apply -f kube-flannel.yml  

检查

[root@k8s-master-01 k8s_yaml]# kubectl get nodes
[root@k8s-master-01 k8s_yaml]# kubectl get pod -n kube-system
 

发现错误,最后将node节点执行

rm -fr /etc/docker/daemon.json 

四、kube tab补全

[root@kubernetes-master k8s_yaml]# soutce <(kubectl completion bash)
[root@kubernetes-master k8s_yaml]# echo "source <(kubectl completion bash)" >> /root/.bashrc 

 

五、静态pod 动态pod

打标签

[root@kubernetes-master k8s_yaml]# kubectl get nodes --show-labels
NAME               STATUS   ROLES    AGE   VERSION    LABELS
k8s-master-01      Ready    master   72m   v1.15.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-master-01,kubernetes.io/os=linux,node-role.kubernetes.io/master=
kubernetes-node1   Ready    master   70m   v1.15.12   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=kubernetes-node1,kubernetes.io/os=linux,node-role.kubernetes.io/master=
 

[root@kubernetes-master k8s_yaml]# kubectl label nodes kubernetes-node1 node-role.kubernetes.io/master=
node/kubernetes-node1 labeled
 

静态pod是走本地(/etc/kubernetes/manifests)

动态pod是走etcd

静态pod后缀名是kubernetes-master,将yaml文件放入到本地,pod自己创建。

动态pod需要执行kubectl create -f nginx.yaml   写入到etcd数据库中。

 

六、安装dashboard服务

 

全部评论