我命由我,不由天!


  • 搜索
prometheus docker golang linux kubernetes

kubernetes安装最新步骤 centos7

发表于 2020-11-27 | 分类于 kubernetes | 0 | 阅读次数 1316

配置节点间通信

节点直接不能通过主机名Ping通,coredns解析会有问题,resolver找不到kube-dns.kube-system.cluster.local

hostname # 查看本机
hosts文件写上对应ip 和 名称
172.16.21.235    master
172.16.21.255  node1

使节点直接能互相ping通

yum换源

mv CentOS-Base.repo CentOS-Base.repo.bak
mv epel.repo epel.repo.bak
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo 
sudo yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update

安装docker

yum install docker-ce
systemctl enable docker.service
systemctl start docker
# 普通用户docker权限,需要注销用户生效
sudo groupadd docker
sudo usermod -aG docker ${USER}

docker换源

这里有个细节,偷偷把cgroupdriver=systemd了,,不然init阶段会出现failed to create kubelet: misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://m0m3chw3.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

yum配置k8s源

cat <<EOF > /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
EOF
yum update

安装kubelet,kubeadm,kubectl

yum install -y kubelet-1.19.3 kubeadm-1.19.3 kubectl-1.19.3 --disableexcludes=kubernetes
systemctl enable kubelet && systemctl start kubelet

Master init集群

image-repository指定国内镜像仓库,默认为谷歌仓库可能拉不下来,修改apiserver-advertise-address指定本机ip

kubeadm init \
  --apiserver-advertise-address=172.16.21.235 \
  --image-repository registry.aliyuncs.com/google_containers  \
  --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.19.3

按照提示信息操作

这配置文件可以放到任何用户下,root用户/普通用户都可以放一份都将可以直接使用kubectl命令,node节点copy过去所有node上的用户都可以使用

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

允许pod部署到master节点

先允许pod部署到master节点,后面的flannel等都需要节点部署,后续加入node节点可以再撤销

kubectl taint node k8s-master node-role.kubernetes.io/master-
恢复:
kubectl taint node centost-aiplatformtextin-8029 node-role.kubernetes.io/master=:NoSchedule

配置内部通信 flannel 网络

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml 
# 查看是否成功,一般是pod拉取失败,需要换镜像仓库
kubectl get pods -n kube-system

子节点加入集群

#主节点运行会生成token 和 ca 替换下面的token和ca
kubeadm token create
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | \
   openssl dgst -sha256 -hex | sed 's/^.* //'

#子节点
kubeadm join 10.2.8.123:6443 --token isj2oo.cjcypoxy6958vcba\
    --discovery-token-ca-cert-hash sha256:247158a11e8e10ba1abd17f7235842aefbe0f3be6365c8ea06e4ece3c4a00585

ingress-nginx安装

官网:https://kubernetes.github.io/ingress-nginx/deploy/

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml
kubectl apply -f deploy.yaml

更改里面的镜像:可以拉到的镜像,下面有更改ingress端口操作,看自己需要

常用命令

给node打标签默认是

kubectl label node centos-dpsopenresty-16102 node-role.kubernetes.io/node=

删除节点

kubectl delete nodes node06

修改ingress端口范围为指定80端口

默认情况下,k8s 集群 nodePort 分配的端口范围为:30000-32767,如果我们指定的端口不在这个范围就会报错:

  1. 修改 /etc/kubernetes/manifests/kube-apiserver.yaml 文件,在 command 下添加 --service-node-port-range=1-65535 参数,添加 nodePort 范围参数后会自动生效,无需进行其他操作:
    vim /etc/kubernetes/manifests/kube-apiserver.yaml
    image.png
  2. 修改ingress.yaml中的配置指定node port
spec:
  type: NodePort
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
      nodePort: 80
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
      nodePort: 443
  • 本文作者: Dante
  • 本文链接: https://gaodongfei.com/archives/centos7-install-kubernetes
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# kubernetes
ConfigMap与Pod的关系
命令行base64编码多一个换行
  • 文章目录
  • 站点概览
Dante

Dante

119 日志
5 分类
5 标签
RSS
Creative Commons
0%
© 2023 Dante
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4
沪ICP备2020033702号