Cents 7 Kubernetes

一、系统准备

1、环境

3台centos 7 ,1台master2台Node节点,生成环境一般3台master和N台Node节点。

cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)

2、修改主机名

hostnamectl set-hostname master
hostnamectl set-hostname node-1
hostnamectl set-hostname node-2

3、安装docker

参考:https://www.cnblogs.com/fanxp/p/11997680.html

4、设置

# 关闭SElinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

# 关闭防火墙
systemctl disable --now firewalld  

# 关闭swap
swapoff -a && sysctl -w vm.swappiness=0  
# 取消开机挂载swap
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab  

# 解决路由异常问题
yum install -y bridge-utils.x86_64
# 加载br_netfilter模块,使用lsmod查看开启的模块
modprobe  br_netfilter  
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 重新加载所有配置文件
sysctl --system  

 

二、安装kubelet kubeadm kubectl

1、设置源

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

2、安装

# 查询可用版本
yum list --showduplicates | grep 'kubeadm\|kubectl\|kubelet'
# 这里默认安装最新版本(v1.17.0)
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# 设置开启启动并启动kubelet
systemctl enable kubelet && systemctl start kubelet

3、master

拉取镜像

# 拉取集群所需镜像,这个需要FQ
kubeadm config images pull 

# 不能FQ用下面方法
kubeadm config images list 

# 用其它地址拉起然后用tag修改
docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google-containers/pause:3.1
docker pull gcr.azk8s.cn/google-containers/etcd:3.4.3-0
docker pull gcr.azk8s.cn/google-containers/coredns:1.6.5

# 修改tag
docker tag gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0
docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag gcr.azk8s.cn/google-containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag gcr.azk8s.cn/google-containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

# 删除原镜像
docker rmi gcr.azk8s.cn/google-containers/kube-apiserver:v1.17.0
docker rmi gcr.azk8s.cn/google-containers/kube-controller-manager:v1.17.0
docker rmi gcr.azk8s.cn/google-containers/kube-scheduler:v1.17.0
docker rmi gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker rmi gcr.azk8s.cn/google-containers/pause:3.1
docker rmi gcr.azk8s.cn/google-containers/etcd:3.4.3-0
docker rmi gcr.azk8s.cn/google-containers/coredns:1.6.5

初始化

kubeadm init --apiserver-advertise-address 192.168.1.221 --pod-network-cidr 10.244.0.0/16

--apiserver-advertise-address API Server将要广播的监听地址。如指定为 `0.0.0.0` 将使用缺省的网卡地址。
--pod-network-cidr=10.244.0.0/16 指明pod网络可以使用的IP地址段。 如果设置了这个参数,control plane将会为每一个节点自动分配CIDRs。

用户设置权限

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

flannel网络

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

 

4、node

拉取镜像

#拉取
docker pull gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google-containers/pause:3.1

#修改tag
docker tag gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0
docker tag gcr.azk8s.cn/google-containers/pause:3.1 k8s.gcr.io/pause:3.1

#删除原镜像
docker rmi gcr.azk8s.cn/google-containers/kube-proxy:v1.17.0
docker rmi gcr.azk8s.cn/google-containers/pause:3.1

 添加节点

kubeadm join 192.168.1.221:6443 --token pt7x4v.5hz02ixc3ymt26az \
    --discovery-token-ca-cert-hash sha256:5104ec0c1da36ff56fe2592ac53e7ee2ba3247da4d9582ae49457ce6747fcf27 

 

5、查看节点状态

在master中执行

kubectl get nodes

 node节点状态处于 NotReady,可以查看pod是否运行正常

kubectl get pod --all-namespaces

 通过 kubectl describe pod <Pod Name> 查看 Pod 的具体情况

kubectl describe pod kube-flannel-ds-amd64-4l92d --namespace=kube-system

通过这里可以看到,node节点正在拉取quay.io/coreos/flannel:v0.11.0-amd64镜像,可以多等一会,node节点拉取完镜像kubernetes会自动重试

如果一直没有成功,可以通过下面命令查看是在哪个节点,直接去node节点机器手动执行docker pull下载镜像

kubectl get pod -o wide --all-namespaces

 最终效果

 

posted @ 2019-12-21 15:08  cqfanxp  阅读(226)  评论(0编辑  收藏  举报