环境初始化
# 关闭SWAP
swapoff -a
rm -f /swap.img
vim /etc/fstab
# /swap.img 注释掉
# 开启IP转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
# 查看状态
sysctl -p
安装DOCKER
step1:安装依赖
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
step2:安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
step3:写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
step4:更新并安装DOCKER-CE->注意:此处可能会报错(参考后面的"遇到的问题")
sudo apt-get -y update
apt install -y docker-ce
安装DOCKER-COMPOSE.YML
apt install -y docker-compose
将DOCKER设置为开机自启
systemctl enable docker
配置镜像--否则后续DOCKER拉取镜像会很慢!!!
$ cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF
DOCKER版本
root@master:/# docker --version
Docker version 20.10.20, build 9fdeb9c
安装K8S
添加证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
添加APT源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
查看可安装版本
apt-cache madison kubelet
安装指定版本
apt-get install -y kubelet=1.18.4-00 kubeadm=1.18.4-00 kubectl=1.18.4-00
设置开机启动
sudo systemctl enable kubelet && sudo systemctl start kubelet
查看所需镜像
kubeadm config images list --kubernetes-version=v1.18.4
k8s.gcr.io/kube-apiserver:v1.18.4
k8s.gcr.io/kube-controller-manager:v1.18.4
k8s.gcr.io/kube-scheduler:v1.18.4
k8s.gcr.io/kube-proxy:v1.18.4
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7
从新地址下载镜像(将上面的地址换成下面的)
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
为镜像重新打TAG(重新命名上面拉取的镜像)
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4 k8s.gcr.io/kube-apiserver:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4 k8s.gcr.io/kube-controller-manager:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4 k8s.gcr.io/kube-scheduler:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4 k8s.gcr.io/kube-proxy:v1.18.4
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
初始化MASTER节点
kubeadm init --kubernetes-version=v1.18.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
初始化完成之后会出现提示,之后将后面的内容保存到一个文件中,先不添加节点检查集群状态是否正常。
Your Kubernetes control-plane has initialized successfully! # 安装成功的提示
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.93.136:6443 --token vvd4zg.4ay8rxanmh7fopec \
--discovery-token-ca-cert-hash sha256:df77248c6939eb6c6062d50e6e99c4f881f48e619ef4d2e61304a529a4c2eb1f
此时执行命令会报如下错误,需要设置环境变量:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
具体根据情况,此处记录LINUX设置该环境变量
方式一:编辑文件设置
vim /etc/profile
在底部增加新的环境变量:export KUBECONFIG=/etc/kubernetes/admin.conf
方式二:直接追加文件内容
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
使生效
source /etc/profile
root@master:/# kubectl get componentstatus
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
root@master:/home/xieming# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 26m v1.18.4
node1 Ready <none> 2m27s v1.18.4
node2 Ready <none> 2m25s v1.18.4
node3 Ready <none> 2m27s v1.18.4
添加CNI网络组件--可能无法下载(国外地址需要翻墙)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
检查状态
kubectl get pods -n kube-system -l app=flannel ???过时了--命名空间变了
root@master:~/kubernetes# kubectl get pods -n kube-flannel
NAME READY STATUS RESTARTS AGE
kube-flannel-ds-6sr4s 1/1 Running 1 2d
kube-flannel-ds-gcsxl 1/1 Running 1 2d
kube-flannel-ds-qg9mc 1/1 Running 1 2d
kube-flannel-ds-tdpp5 1/1 Running 1 2d
root@master:~/kubernetes# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-66bff467f8-dlj8c 1/1 Running 1 2d
coredns-66bff467f8-g4z94 1/1 Running 1 2d
etcd-master 1/1 Running 1 2d
kube-apiserver-master 1/1 Running 1 2d
kube-controller-manager-master 1/1 Running 1 2d
kube-proxy-25n7c 1/1 Running 1 2d
kube-proxy-6l5bn 1/1 Running 1 2d
kube-proxy-l7hm8 1/1 Running 1 2d
kube-proxy-xgcjt 1/1 Running 1 2d
kube-scheduler-master 1/1 Running 1 2d
检查节点是否准备完成
kubectl get nodes
为NODE的角色打标签
kubectl label node node01 node-role.kubernetes.io/node=node
测试KUBERNETES集群
在KUBERNETES集群中创建一个POD,验证是否正常运行:
root@master:~/kubernetes# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created
root@master:~/kubernetes# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
root@master:~/kubernetes# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-f89759699-5kscr 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 2d
service/nginx NodePort 10.107.128.217 <none> 80:31788/TCP 2m36s
访问地址:http://nodeip:port
遇到的问题
E: Failed to fetch https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/stable/binary-amd64/Packages.bz2 File has unexpected size (19784 != 18519). Mirror sync in progress? [IP: 119.188.122.238 443]
Hashes of expected file:
- Filesize:18519 [weak]
- SHA512:25ae8d060506d811c6e53f43b08e3bc9a95de020606dae54e5f8770384b50cbbde50307085d66d2020e10431025331e788ba0e4208f734fc8cfafe18b1f0bcff
- SHA256:bff1fb7605fad668dc36da2a8ab9e8c864d48266d2859c35bd51ad38247181ff
- SHA1:836ec0a727741aebd12b599656dc715b830a6dfe [weak]
- MD5Sum:9d0854226ca04178e142c0bb32139451 [weak]
Release file created at: Wed, 05 Oct 2022 15:08:31 +0000
E: Some index files failed to download. They have been ignored, or old ones used instead.
或
Err:5 https://download.docker.com/linux/ubuntu focal Release
404 Not Found [IP: 13.249.173.43 443]
解决办法:
vim /etc/apt/sources.list
# deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
或
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable