注: docker系列都是以前自己学习搭建时的笔记,难免有疏漏之处,仅做参考

docker集群管理 (主机先做免密登录,方便文件copy)

master: 192.168.138.111

slave1: 192.168.138.112

slave2: 192.168.138.113

#正文部分

所有主机(master,slave1,slave2)执行

#时间同步

systemctl start chronyd.service

systemctl enable chronyd.service

关闭swapoff

swapoff -a

#配置yum源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker.repo

cat << EOF >/etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

enabled=1

EOF

导入gpgcheck包

wget -q https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

wget -q https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

rpm –import yum-key.gpg

rpm –import rpm-package-key.gpg

scp rpm-package-key.gpg slave1:/root

scp rpm-package-key.gpg slave2:/root

scp yum-key.gpg slave1:/root

scp yum-key.gpg slave2:/root

scp /etc/yum.repos.d/kubernetes.repo slave1:/etc/yum.repos.d/

scp /etc/yum.repos.d/kubernetes.repo slave2:/etc/yum.repos.d/

master主机

查看docker kubeadm kubelet kubectl 版本

yum list kubelet kubeadm kubectl –showduplicates|sort -r
yum list docker-ce –showduplicates | sort -r

安装docker-ce kubelet kubeadm kubectl

yum install docker-ce kubeadm-1.23.3 kubectl-1.23.3 kubelet-1.23.3 -y

rpm -ql kubelet

设置开机自启

systemctl enable kubelet

systemctl enable docker

systemctl start docker

把以下功能打开,否则可能会报错

echo “1”>/proc/sys/net/bridge/bridge-nf-call-iptables

echo “1”>/proc/sys/net/bridge/bridge-nf-call-ip6tables

echo “1”> /proc/sys/net/ipv4/ip_forward

#执行

kubeadm config images list

#输出

k8s.gcr.io/kube-apiserver:v1.23.3
k8s.gcr.io/kube-controller-manager:v1.23.3
k8s.gcr.io/kube-scheduler:v1.23.3
k8s.gcr.io/kube-proxy:v1.23.3
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6

pull镜像

docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.3
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.3
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.3
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3
docker pull registry.aliyuncs.com/google_containers/pause:3.6
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.1-0
docker pull registry.aliyuncs.com/google_containers/coredns:v1.8.6

打标签

docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.3 k8s.gcr.io/kube-apiserver:v1.23.3
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.3 k8s.gcr.io/kube-controller-manager:v1.23.3
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.3 k8s.gcr.io/kube-scheduler:v1.23.3
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3 k8s.gcr.io/kube-proxy:v1.23.3
docker tag registry.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.1-0 k8s.gcr.io/etcd:3.5.1-0
docker tag registry.aliyuncs.com/google_containers/coredns:v1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6

删除旧镜像

docker rmi registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.3
docker rmi registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.3
docker rmi registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.3
docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3
docker rmi registry.aliyuncs.com/google_containers/pause:3.6
docker rmi registry.aliyuncs.com/google_containers/etcd:3.5.1-0
docker rmi registry.aliyuncs.com/google_containers/coredns:v1.8.6

关闭Swap选项

cat << EOF >/etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS=”–fail-swap-on=false”

EOF

#执行初始化

kubeadm init –kubernetes-version=v1.23.3 –pod-network-cidr=10.244.0.0/16 –service-cidr=10.96.0.0/12 –token-ttl=0 –ignore-preflight-errors=Swap

1
2
3
4
5
6
7
8
9
 vi /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"] } 

# 重启docker
systemctl restart docker
# 重新初始化
kubeadm reset
# 先重置

kubeadm init --control-plane-endpoint=192.168.137.110 --apiserver-advertise-address=192.168.137.110 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.23.3 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all

查看K8S运行状态:

1
kubectl get po -n kube-system

若期望新增节点,则需要重新生成token,默认是24小时有效期,这里可以通过设置ttl=0为永久有效

1
kubeadm token create --print-join-command --ttl=0

输出:

1
kubeadm join 192.168.137.110:6443 --token q4ge2n.rnwke6l5wmtaglrj --discovery-token-ca-cert-hash sha256:b64218fa30ae1ca5f8f7e336f935fc7bf84d561a7e29521800b12d5fe34c6819

flannel 安装

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

创建集群 注意输出最后信息 子节点加入时需要

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

节点配置

rpm-gpg引入完成后开始安装所需包

rpm -import yum-key.gpg

rpm -import rpm-package-key.gpg

#安装所需包,kubelet不用立即启动,在加入k8s后就会启动

yum install docker-ce kubeadm-1.23.3 kubectl-1.23.3 kubelet-1.23.3 -y

systemctl enable docker kubelet

systemctl start docker

#设置

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 1 >/proc/sys/net/bridge/bridge-nf-call-iptables

关闭Swap选项

cat << EOF >/etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS=”–fail-swap-on=false”

EOF

节点加入集群 注意master创建集群信息

kubeadm join 192.168.137.110:6443 –token ls7p8w.db58adnrufdxorjl –discovery-token-ca-cert-hash sha256:dac6495e40d745a50fa37e217355c0895c233e9b9e6a1535df243b4926d4c5a9 –ignore-preflight-errors=Swap

节点下载所需镜像

docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3

docker pull registry.aliyuncs.com/google_containers/pause:3.6

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

docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3 k8s.gcr.io/kube-proxy:v1.23.3

docker tag registry.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6

docker rmi registry.aliyuncs.com/google_containers/kube-proxy:v1.23.3

docker rmi registry.aliyuncs.com/google_containers/pause:3.6

出现的问题:

1.The connection to the server localhost:8080 was refused - did you specify the right host or port?

echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> /etc/profile

source /etc/profile